<p>Close your eyes.</p>
<p>Now reach out, carefully, until you touch something. Feel it; examine its shape, its edges and contours.</p>
<p>Now tell me what it is.</p>
<p>That is how you play ________.</p>
<p>--&lt;&gt;--<br></p>
<p>Controls:
<br>- spam your keyboard to see
(or to let out your frustrations)<br>- type the name of what you see<br>
- keyboard or mouse for menus</p>
<p>Difficulty:<br>To complete this game will almost certainly take a team effort. We recommend playing it with friends, though it might be possible to complete it single handedly?!</p>
<p>There are 20 levels in this experimental, odd little thing. _________ was put together just for the fun of it by;</p>
<p> Rowan Crawford (<a href="https://twitter.com/Sumaleth" rel="nofollow noopener">https://twitter.com/Sumaleth</a>)<br>Ben Weatherall (<a href="https://twitter.com/SunraHeadgear" rel="nofollow noopener">https://twitter.com/SunraHeadgear</a>)<br>Rich McBride (<a href="https://twitter.com/Tanngnost" rel="nofollow noopener">https://twitter.com/Tanngnost</a>)</p>
<p>We hope you enjoy _________. Thanks for playing.</p>
<p>Update:</p>
<p>v1.2 Fixes two levels that were broken on some computers and  it again tweaks level flow to make the transition to secret levels more intuitive. Some improvements for readability on very high resolutions too. Finally, I added a 32bit Windows build.<br></p>
<p>v1.1 Improves the intuitive flow from the regular levels (1-17) through to the secret levels (18-20). Plus there are some small bug fixes.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjcucG5n/original/GltWCs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjkucG5n/original/6aEDMB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjgucG5n/original/0UIZbw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MzAucG5n/original/VyTExQ.png]]
<p><strong>.dungeon</strong> is a book about traveling through a virtual, fantasy world. One person takes on the role of the World, filling&nbsp;in the nooks and crannies with dungeons and adventures that they think up or borrow from books they already own.&nbsp;Everyone else is a Player and creates a Character to explore those nooks, discover their treasure, and interact with&nbsp;NPCs and other flesh-and-blood folks in the virtual world.</p>
<p>The thing that sets .dungeon apart from other books is the inspiration it takes from social games like Werewolf and Munchkin. The real world can (and will) affect the game you create. Each class has different powers based on physical things you do, or different parts of your life. The witch uses their tattoos to cast spells while the wizard uses their favorite book. The knight makes vows while the leader can offer gifts to the other players to aid them. There are 10 classes total to choose from, including the bard, the troll, and the artist.&nbsp;</p>
<p>Beyond that, the game functions on a <em>simple</em> <strong>contest system</strong>.</p>
<ul><li>You assign dice (like the d4, and the d8) to your stats</li><li>Roll the appropriate die when facing an obstacle</li><li>If you roll higher than the obstacle, you succeed!</li><li>If you roll lower, you take damage equal to the difference</li></ul>
<p>When you take damage it's subtracted from your connection, which is a shared pool of hit points between all of the characters. It represents your time together in this virtual world, and when it dwindles down to 0, it's game over.</p>
<p><strong>Also included in the book:</strong></p>
<ul><li>A simple oracle system</li><li>NPC charts for plotting in-depth characters</li><li>A quest generator</li><li>Advice/tools for porting adventures/monsters over to .dungeon with ease</li></ul>
<p>You can still <a href="https://nerves.store/products/dungeon-preorder?variant=37599673712827" rel="nofollow noopener">preorder the physical edition of the game</a> (hardback, stitched binding) over at&nbsp;<a href="https://nerves.store/products/dungeon-preorder?variant=37599673712827" rel="nofollow noopener">nerves.store</a> for $25!</p>
<p><em>This pdf will be updated when the rest of the art comes in!</em></p>
<p></p>
<iframe style="border: 0; width: 350px; height: 470px" src="https://bandcamp.com/EmbeddedPlayer/album=1432294849/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/transparent=true/"><a href="https://nervesproject.bandcamp.com/album/dungeon" rel="nofollow noopener">.dungeon by Nerves</a></iframe>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DGLR3i-fbnM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjUucG5n/original/Lv5tR4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjQucG5n/original/p6%2BDBY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjYucG5n/original/Xh%2F3Y0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMTg3MDQucG5n/original/NHrmCf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMTg3MDUucG5n/original/EAWzj4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjcucG5n/original/XTZFJr.png]]

<p>(current year) is a simple system (2d10 rolls, set damages, set DCs) for creating people and an area to play a game in, and then playing the game. The system also comes with a number of tables to roll on in order to generate people, most of which are system-agnostic and can be used to generate characters for other games in modern settings.<br></p>
<p>A surveillance and infrastructure system known as OPTICON has been established in cities and countries around the world, to the delight of governments and corporations, and the relative indifference of the populace. You play as normal people given the ability to access OPTICON and the devices connected to it by a mysterious figure known as [i].</p>
<p>The game also comes with a character sheet (in the form of a fillable pdf).<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzYxMDI5MTEuanBn/original/ugE8ME.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzU5OTU1NjQuanBn/original/J0R8hY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzU5OTU1NTkuanBn/original/DzoUmf.jpg]]
<p>Three Red Hearts is a love letter from me to the Chiptune genre. Growing up surrounded by what is now considered "retro" video game music, Chiptune was incredibly formative to my development as a composer.<span></span></p>
<p>The original album can be previewed and downloaded here: <a href="http://abstractionmusic.bandcamp.com/album/three-red-hearts" rel="nofollow noopener">http://abstractionmusic.bandcamp.com/album/three-red-hearts</a><a href="http://abstractionmusic.bandcamp.com/album/three-red-hearts" rel="nofollow noopener"></a></p>
<p>The Prepare to Dev edition strips each song down to a raw WAV file, designed to loop perfectly within any media you import it into.<br></p>
<p>This pack contains 24 original Chiptune (or Chiptune-inspired) songs. Many of them were created in a program named Famitracker, which is a NES soundchip emulator. </p>
<p>While these songs are listed as pay-what-you-want, if you do plan on making money off your game (either through ads, microtransactions, or direct sales), please donate what you think is fair for this content. &lt;3<br></p>
<p><em>"Three Red Hearts, Prepare to Dev Edition" by Abstraction (<a href="http://www.abstractionmusic.com" rel="nofollow noopener">http://www.abstractionmusic.com</a>)</em><br></p>
<p><em>Licensed under Creative Commons: By Attribution 4.0 International.<br></em><em><a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener">http://creativecommons.org/licenses/by/4.0/</a></em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ4NzkvOTk0NDgucG5n/original/Zxs3Iw.png]]
<p>/dia is a micro ttrpg that invites the player to create a character and then imagine a moment of impending doom. The player then decides what comes next. <br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk5MzI4LzUxMjQ3NTMuanBn/original/0oZDPx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MzI4LzUxMjQ3NTguanBn/original/a%2Fd1EQ.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQwMTE2MjAucG5n/original/xqhnWb.png" loading="lazy"><br></p>
<p>The Global Games Industry Guide (<span class=""><a href="https://twitter.com/hashtag/GGIG20?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener">#GGIG2020</a>)</span><span class=""> is a free resource &amp; quarterly PDF I hand-curate for the </span><span class=""><a href="https://twitter.com/hashtag/VideoGames?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener">#VideoGames</a></span><span class=""> Industry.</span></p>
<p><span class="">Featuring 800+ entities including Publishers, Funding, Awards, Industry Bodies, Networks and more... (<a href="https://forms.gle/eC2beqrCUv27uNXg7" target="_blank" rel="nofollow noopener">submissions to be considered for inclusion into the guide&nbsp;can be made using this form</a>)</span></p>
<hr>
<p>Download the file versions&nbsp;for free&nbsp;below <strong>OR</strong>&nbsp;check out the live guide on Trello at <a href="https://t.co/INvvxfjLEK?amp=1" title="https://trello.com/b/BRHxZpZ9/" target="_blank" dir="ltr" class="" rel="nofollow noopener"><span class="">https://</span>trello.com/b/BRHxZpZ9/</a></p>
<hr>
<p><strong>Categories include:</strong><br></p>
<ul><li>Useful Links / Other Resources</li><li>Accellerators</li><li>Accessibility in Games</li><li>Creative Incubators</li><li>Consultancy in Games</li><li>Crowd Funding</li><li>Current Affairs</li><li>Diversity &amp; Inclusion in Games</li><li>Education in Games</li><li>Equity Investment</li><li>Game Engines</li><li>Game Charities</li><li>Grants</li><li>Indie&nbsp;Game Funds</li><li>Industry Awards</li><li>Industry Bodies</li><li>Industry Companies / Careers</li><li>Industry Networks</li><li>Industry News / Press</li><li>Industry Trade Unions</li><li>Legal / Finance in Games</li><li>Loans</li><li>Localisation / Translation</li><li>Mobile Funding</li><li>Platforms</li><li>Podcasts + Radio (+ archive)</li><li>Private Equity / Bank</li><li>Project Finance</li><li>Project Funding</li><li>Public Fund</li><li>Publishers (A-Z)</li><li>Rating Systems</li><li>Research in Games</li><li>Self-Funding</li><li>Venture Capital (A-Z)</li><li>Voice Over</li><li>SEED</li><li>SEIS / EIS</li><li>Strategic Finance</li><li>Video Game Tax Relief</li><li>VR / AR / XR Funding</li><li>Misc Funding</li></ul>
<p>Please consider buying the supporters edition; there is zero difference, but it will allow me to continue making the guide even better. Thank you!</p>
<hr>
<p>Curated by @<a href="https://www.twitter.com/liamtwose" style="font-size: inherit" rel="nofollow noopener">LiamTwose</a>&nbsp;(<a href="https://linktr.ee/liamTwose" rel="nofollow noopener">https://linktr.ee/liamTwose</a>)</p>
<blockquote><strong>Creator of&nbsp;<a href="https://twitter.com/search?q=%23pitchyagame&amp;src=typed_query" target="_blank" rel="nofollow noopener">#PitchYaGame</a> and previously #30daydev.<br></strong>You can follow&nbsp;all my current games in development at&nbsp;<a href="https://liamtwose.itch.io/" target="_blank">https://liamtwose.itch.io</a>&nbsp;including&nbsp;<a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">Gamma 5: Zero</a>&nbsp;a&nbsp;<a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">classic RTS game</a>&nbsp;inspired by&nbsp;the originals, including&nbsp;Dune 2, Dune 2000, Command &amp; Conquer, KKND, Total Annihilation, Warzone 2100 and more.</blockquote>
<h6>Follow me on Twitter&nbsp;<a href="https://www.twitter.com/liamtwose" target="_blank" rel="nofollow noopener">@liamtwose</a>&nbsp;:)</h6>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzQwMTE2MTYucG5n/original/TF7eIc.png]]

<p>In the grim darkness of the far future, society has been driven underground by the invasion of the Shakaijū, giant four-wheeled mechanical monsters that emerged from the void and covered the world in smoke and darkness. You are part of a force of selected teenage warriors that are the only ones that can defend the last surviving buried strongholds.</p>
<p>A LARP about emotional mechas and trains, by someone who’s never watched mecha anime, for ~8 players and a facilitator or a kitchen timer.</p>
<p>Light secrets, no powers, mechanical narrative.</p>
<p>Content Notes: death, suicidality, dysfunctional relationships &amp; unhealthy emotional expression.</p>
<p>Written for #sadmechjam, but this version wasn't eligible because I'm bad at reading instructions. (This is an expanded version with character sheets.)</p>

[img width=500 [https://img.itch.zone/aW1nLzE4Mjc1NzAucG5n/original/g0JjC7.png]]
above
permalink
yes
show
hide
hide
show
disable
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/add-comment": {
            "title": "$:/core/images/add-comment",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
        },
        "$:/core/images/gitter": {
            "title": "$:/core/images/gitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
        },
        "$:/core/images/left-arrow": {
            "title": "$:/core/images/left-arrow",
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
        },
        "$:/core/images/linkify": {
            "title": "$:/core/images/linkify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
        },
        "$:/core/images/rotate-left": {
            "title": "$:/core/images/rotate-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
        },
        "$:/core/images/transcludify": {
            "title": "$:/core/images/transcludify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/up-arrow": {
            "title": "$:/core/images/up-arrow",
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "copy to clipboard"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "Copy this text to the clipboard"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/SidebarSearch/Hint": {
            "title": "$:/language/Buttons/SidebarSearch/Hint",
            "text": "Select the sidebar search field"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "wikilink"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "Wrap selection in square brackets"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "rotate left"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "Rotate image left by 90 degrees"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/ToggleSidebar/Hint": {
            "title": "$:/language/Buttons/ToggleSidebar/Hint",
            "text": "Toggle the sidebar visibility"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "transclusion"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "Wrap selection in curly brackets"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration"
        },
        "$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
            "text": "Default focus field for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "Title of new tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
            "text": "Tags for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/RemoveTags": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags",
            "text": "Update to current format"
        },
        "$:/language/ControlPanel/Basics/RemoveTags/Hint": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
            "text": "Update the tags configuration to the latest format"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LayoutSwitcher/Caption": {
            "title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
            "text": "Layout"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
            "title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
            "text": "delete this entry from the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
            "title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
            "text": "Show color names that are not part of the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/AlsoRequires": {
            "title": "$:/language/ControlPanel/Plugins/AlsoRequires",
            "text": "Also requires:"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Downgrade/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
            "text": "downgrade"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
            "title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
            "text": "(requires reload)"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Plugins/Update/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Update/Caption",
            "text": "update"
        },
        "$:/language/ControlPanel/Plugins/Updates/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Caption",
            "text": "Updates"
        },
        "$:/language/ControlPanel/Plugins/Updates/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Hint",
            "text": "Available updates to installed plugins"
        },
        "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
            "text": "Update <<update-count>> plugins"
        },
        "$:/language/ControlPanel/Plugins/SubPluginPrompt": {
            "title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
            "text": "With <<count>> sub-plugins available"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/GitService/Branch": {
            "title": "$:/language/ControlPanel/Saving/GitService/Branch",
            "text": "Target branch for saving"
        },
        "$:/language/ControlPanel/Saving/GitService/CommitMessage": {
            "title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
            "text": "Saved by TiddlyWiki"
        },
        "$:/language/ControlPanel/Saving/GitService/Description": {
            "title": "$:/language/ControlPanel/Saving/GitService/Description",
            "text": "These settings are only used when saving to <<service-name>>"
        },
        "$:/language/ControlPanel/Saving/GitService/Filename": {
            "title": "$:/language/ControlPanel/Saving/GitService/Filename",
            "text": "Filename of target file (e.g. `index.html`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Path": {
            "title": "$:/language/ControlPanel/Saving/GitService/Path",
            "text": "Path to target file (e.g. `/wiki/`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Repo": {
            "title": "$:/language/ControlPanel/Saving/GitService/Repo",
            "text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
        },
        "$:/language/ControlPanel/Saving/GitService/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
            "text": "Server API URL"
        },
        "$:/language/ControlPanel/Saving/GitService/UserName": {
            "title": "$:/language/ControlPanel/Saving/GitService/UserName",
            "text": "Username"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
            "text": "~GitHub Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
            "text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
            "text": "~GitLab Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
            "text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
            "text": "Gitea Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
            "text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
            "text": "~TiddlySpot Control Panel"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
            "text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "Permalink/permaview Mode"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "Choose how permalink/permaview is handled:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "Copy permalink/permaview URL to clipboard"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "Update address bar with permalink/permaview URL"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "Default More Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "Specify which More sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "Stylesheets"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "Expand All"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "Restore"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "Defines how requests are authenticated by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "Defines how individual URL patterns are handled by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/menubar-background": {
            "title": "$:/language/Docs/PaletteColours/menubar-background",
            "text": "Menu bar background"
        },
        "$:/language/Docs/PaletteColours/menubar-foreground": {
            "title": "$:/language/Docs/PaletteColours/menubar-foreground",
            "text": "Menu bar foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` element background"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` element text"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "field list"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "Show field list"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
            "text": "Add the new field to the tiddler"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
            "text": "add tag"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Caption": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
            "text": "clear input"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Hint": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
            "text": "Clear tag input"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following references to this tiddler will not be automatically updated:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hide-body": {
            "title": "$:/language/Docs/Fields/hide-body",
            "text": "The view template will hide bodies of tiddlers if set to: ''yes''"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/throttle.refresh": {
            "title": "$:/language/Docs/Fields/throttle.refresh",
            "text": "If present, throttles refreshes of this tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/toc-link": {
            "title": "$:/language/Docs/Fields/toc-link",
            "text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Docs/Fields/_is_skinny": {
            "title": "$:/language/Docs/Fields/_is_skinny",
            "text": "If present, indicates that the tiddler text field must be loaded from the server"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SessionTiddlers": {
            "title": "$:/language/Filters/SessionTiddlers",
            "text": "Tiddlers modified since the wiki was loaded"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/deletetiddlers": {
            "title": "$:/language/Help/deletetiddlers",
            "description": "Deletes a group of tiddlers",
            "text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "Import tiddlers from a file",
            "text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "Renders individual tiddlers to files",
            "text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "Saves individual raw tiddlers to files",
            "text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/savewikifolder": {
            "title": "$:/language/Help/savewikifolder",
            "description": "Saves a wiki to a new wiki folder",
            "text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
            "text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "Preview:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "Text"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "Text (Raw)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "Fields"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "Diff"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "Diff (Fields)"
        },
        "$:/language/Import/Listing/Rename/Tooltip": {
            "title": "$:/language/Import/Listing/Rename/Tooltip",
            "text": "Rename tiddler before importing"
        },
        "$:/language/Import/Listing/Rename/Prompt": {
            "title": "$:/language/Import/Listing/Rename/Prompt",
            "text": "Rename to:"
        },
        "$:/language/Import/Listing/Rename/ConfirmRename": {
            "title": "$:/language/Import/Listing/Rename/ConfirmRename",
            "text": "Rename tiddler"
        },
        "$:/language/Import/Listing/Rename/CancelRename": {
            "title": "$:/language/Import/Listing/Rename/CancelRename",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Rename/OverwriteWarning": {
            "title": "$:/language/Import/Listing/Rename/OverwriteWarning",
            "text": "A tiddler with this title already exists."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler."
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler."
        },
        "$:/language/Import/Upgrader/System/Warning": {
            "title": "$:/language/Import/Upgrader/System/Warning",
            "text": "Core module tiddler."
        },
        "$:/language/Import/Upgrader/System/Alert": {
            "title": "$:/language/Import/Upgrader/System/Alert",
            "text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>."
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmAction": {
            "title": "$:/language/ConfirmAction",
            "text": "Do you wish to proceed?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> differences"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/FilterRunPrefix": {
            "title": "$:/language/Error/FilterRunPrefix",
            "text": "Filter Error: Unknown prefix for filter run"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/FormatFilterOperator": {
            "title": "$:/language/Error/FormatFilterOperator",
            "text": "Filter Error: Unknown suffix for the 'format' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/NetworkErrorAlert": {
            "title": "$:/language/Error/NetworkErrorAlert",
            "text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LayoutSwitcher/Description": {
            "title": "$:/language/LayoutSwitcher/Description",
            "text": "Open the layout switcher"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PageTemplate/Description": {
            "title": "$:/language/PageTemplate/Description",
            "text": "the default ~TiddlyWiki layout"
        },
        "$:/language/PageTemplate/Name": {
            "title": "$:/language/PageTemplate/Name",
            "text": "Default ~PageTemplate"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
            "title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
            "text": "Open the ~AdvancedSearch panel from within the sidebar search field"
        },
        "$:/language/Shortcuts/Input/Accept/Hint": {
            "title": "$:/language/Shortcuts/Input/Accept/Hint",
            "text": "Accept the selected item"
        },
        "$:/language/Shortcuts/Input/AcceptVariant/Hint": {
            "title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
            "text": "Accept the selected item (variant)"
        },
        "$:/language/Shortcuts/Input/Cancel/Hint": {
            "title": "$:/language/Shortcuts/Input/Cancel/Hint",
            "text": "Clear the input field"
        },
        "$:/language/Shortcuts/Input/Down/Hint": {
            "title": "$:/language/Shortcuts/Input/Down/Hint",
            "text": "Select the next item"
        },
        "$:/language/Shortcuts/Input/Tab-Left/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
            "text": "Select the previous Tab"
        },
        "$:/language/Shortcuts/Input/Tab-Right/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
            "text": "Select the next Tab"
        },
        "$:/language/Shortcuts/Input/Up/Hint": {
            "title": "$:/language/Shortcuts/Input/Up/Hint",
            "text": "Select the previous item"
        },
        "$:/language/Shortcuts/SidebarLayout/Hint": {
            "title": "$:/language/Shortcuts/SidebarLayout/Hint",
            "text": "Change the sidebar layout"
        },
        "$:/language/Switcher/Subtitle/theme": {
            "title": "$:/language/Switcher/Subtitle/theme",
            "text": "Switch Theme"
        },
        "$:/language/Switcher/Subtitle/layout": {
            "title": "$:/language/Switcher/Subtitle/layout",
            "text": "Switch Layout"
        },
        "$:/language/Switcher/Subtitle/language": {
            "title": "$:/language/Switcher/Subtitle/language",
            "text": "Switch Language"
        },
        "$:/language/Switcher/Subtitle/palette": {
            "title": "$:/language/Switcher/Subtitle/palette",
            "text": "Switch Palette"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Icons/None": {
            "title": "$:/language/TagManager/Icons/None",
            "text": "None"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal\n"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "Copied to clipboard!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "Failed to copy to clipboard!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "Explorer"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "Editor font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "Backlinks"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "title": "$:/core/modules/commander.js",
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "title": "$:/core/modules/commands/build.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "title": "$:/core/modules/commands/clearpassword.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/deletetiddlers.js": {
            "title": "$:/core/modules/commands/deletetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "title": "$:/core/modules/commands/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "title": "$:/core/modules/commands/fetch.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tdata = [];\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        data.push(chunk);\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(Buffer.concat(data),type,options,url);\n\t\t        callback(null);\n\t        } else {\n\t        \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t        \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t        \t} else {\n\t\t        \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t        \t\t\n\t        \t}\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "title": "$:/core/modules/commands/help.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/import.js": {
            "title": "$:/core/modules/commands/import.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "title": "$:/core/modules/commands/init.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/listen.js": {
            "title": "$:/core/modules/commands/listen.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "title": "$:/core/modules/commands/load.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "title": "$:/core/modules/commands/makelibrary.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "title": "$:/core/modules/commands/output.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "title": "$:/core/modules/commands/password.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/render.js": {
            "title": "$:/core/modules/commands/render.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "title": "$:/core/modules/commands/rendertiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/save.js": {
            "title": "$:/core/modules/commands/save.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "title": "$:/core/modules/commands/savetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "title": "$:/core/modules/commands/savetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savewikifolder.js": {
            "title": "$:/core/modules/commands/savewikifolder.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type]  || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "title": "$:/core/modules/commands/server.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "title": "$:/core/modules/commands/setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "title": "$:/core/modules/commands/unpackplugin.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "title": "$:/core/modules/commands/verbose.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "title": "$:/core/modules/commands/version.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "title": "$:/core/modules/config.js",
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "title": "$:/core/modules/deserializers.js",
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "title": "$:/core/modules/editor/engines/framed.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "title": "$:/core/modules/editor/engines/simple.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "title": "$:/core/modules/editor/factory.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/rotate-left.js": {
            "title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/save-selection.js": {
            "title": "$:/core/modules/editor/operations/text/save-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filterrunprefixes/all.js": {
            "title": "$:/core/modules/filterrunprefixes/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/and.js": {
            "title": "$:/core/modules/filterrunprefixes/and.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/else.js": {
            "title": "$:/core/modules/filterrunprefixes/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/except.js": {
            "title": "$:/core/modules/filterrunprefixes/except.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/filter.js": {
            "title": "$:/core/modules/filterrunprefixes/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/intersection.js": {
            "title": "$:/core/modules/filterrunprefixes/intersection.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/or.js": {
            "title": "$:/core/modules/filterrunprefixes/or.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/reduce.js": {
            "title": "$:/core/modules/filterrunprefixes/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" +  (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filters/addprefix.js": {
            "title": "$:/core/modules/filters/addprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "title": "$:/core/modules/filters/addsuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "title": "$:/core/modules/filters/after.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "title": "$:/core/modules/filters/all/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "title": "$:/core/modules/filters/all/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "title": "$:/core/modules/filters/all/orphans.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "title": "$:/core/modules/filters/all/shadows.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "title": "$:/core/modules/filters/all/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "title": "$:/core/modules/filters/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "title": "$:/core/modules/filters/backlinks.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "title": "$:/core/modules/filters/before.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "title": "$:/core/modules/filters/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/compare.js": {
            "title": "$:/core/modules/filters/compare.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/contains.js": {
            "title": "$:/core/modules/filters/contains.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "title": "$:/core/modules/filters/count.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "title": "$:/core/modules/filters/days.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/duplicateslugs.js": {
            "title": "$:/core/modules/filters/duplicateslugs.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "title": "$:/core/modules/filters/each.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "title": "$:/core/modules/filters/eachday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "title": "$:/core/modules/filters/editiondescription.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "title": "$:/core/modules/filters/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/else.js": {
            "title": "$:/core/modules/filters/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "title": "$:/core/modules/filters/enlist.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "title": "$:/core/modules/filters/field.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "title": "$:/core/modules/filters/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/filter.js": {
            "title": "$:/core/modules/filters/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/format/date.js": {
            "title": "$:/core/modules/filters/format/date.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format/relativedate.js": {
            "title": "$:/core/modules/filters/format/relativedate.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format.js": {
            "title": "$:/core/modules/filters/format.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "title": "$:/core/modules/filters/get.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "title": "$:/core/modules/filters/getindex.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getvariable.js": {
            "title": "$:/core/modules/filters/getvariable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "title": "$:/core/modules/filters/has.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "title": "$:/core/modules/filters/haschanged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "title": "$:/core/modules/filters/indexes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "title": "$:/core/modules/filters/insertbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/binary.js": {
            "title": "$:/core/modules/filters/is/binary.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/blank.js": {
            "title": "$:/core/modules/filters/is/blank.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "title": "$:/core/modules/filters/is/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/draft.js": {
            "title": "$:/core/modules/filters/is/draft.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "title": "$:/core/modules/filters/is/image.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "title": "$:/core/modules/filters/is/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "title": "$:/core/modules/filters/is/orphan.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "title": "$:/core/modules/filters/is/shadow.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "title": "$:/core/modules/filters/is/system.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "title": "$:/core/modules/filters/is/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "title": "$:/core/modules/filters/is/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/variable.js": {
            "title": "$:/core/modules/filters/is/variable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "title": "$:/core/modules/filters/is.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "title": "$:/core/modules/filters/limit.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "title": "$:/core/modules/filters/links.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "title": "$:/core/modules/filters/list.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "title": "$:/core/modules/filters/listed.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "title": "$:/core/modules/filters/listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/lookup.js": {
            "title": "$:/core/modules/filters/lookup.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/match.js": {
            "title": "$:/core/modules/filters/match.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/math.js": {
            "title": "$:/core/modules/filters/math.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "title": "$:/core/modules/filters/minlength.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "title": "$:/core/modules/filters/modules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "title": "$:/core/modules/filters/moduletypes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "title": "$:/core/modules/filters/next.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "title": "$:/core/modules/filters/prefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "title": "$:/core/modules/filters/previous.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/range.js": {
            "title": "$:/core/modules/filters/range.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/reduce.js": {
            "title": "$:/core/modules/filters/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" +  list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "title": "$:/core/modules/filters/regexp.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "title": "$:/core/modules/filters/removeprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "title": "$:/core/modules/filters/removesuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "title": "$:/core/modules/filters/sameday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "title": "$:/core/modules/filters/search.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "title": "$:/core/modules/filters/shadowsource.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/slugify.js": {
            "title": "$:/core/modules/filters/slugify.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "title": "$:/core/modules/filters/sort.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sortsub.js": {
            "title": "$:/core/modules/filters/sortsub.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "title": "$:/core/modules/filters/splitbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "title": "$:/core/modules/filters/storyviews.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/strings.js": {
            "title": "$:/core/modules/filters/strings.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subfilter.js": {
            "title": "$:/core/modules/filters/subfilter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subtiddlerfields.js": {
            "title": "$:/core/modules/filters/subtiddlerfields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "title": "$:/core/modules/filters/suffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "title": "$:/core/modules/filters/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "title": "$:/core/modules/filters/tagging.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "title": "$:/core/modules/filters/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/then.js": {
            "title": "$:/core/modules/filters/then.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "title": "$:/core/modules/filters/title.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "title": "$:/core/modules/filters/untagged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/variables.js": {
            "title": "$:/core/modules/filters/variables.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "title": "$:/core/modules/filters/x-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset =  (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "title": "$:/core/modules/filters.js",
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/indexers/backlinks-indexer.js": {
            "title": "$:/core/modules/indexers/backlinks-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser =  this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t    oldLinks = [],\n\t    self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/field-indexer.js": {
            "title": "$:/core/modules/indexers/field-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/tag-indexer.js": {
            "title": "$:/core/modules/indexers/tag-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/info/platform.js": {
            "title": "$:/core/modules/info/platform.js",
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "title": "$:/core/modules/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "title": "$:/core/modules/language.js",
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "title": "$:/core/modules/macros/changecount.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "title": "$:/core/modules/macros/contrastcolour.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "title": "$:/core/modules/macros/jsontiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "title": "$:/core/modules/macros/makedatauri.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "title": "$:/core/modules/macros/now.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "title": "$:/core/modules/macros/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "title": "$:/core/modules/macros/resolvepath.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/unusedtitle.js": {
            "title": "$:/core/modules/macros/unusedtitle.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "title": "$:/core/modules/macros/version.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "title": "$:/core/modules/parsers/audioparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/binaryparser.js": {
            "title": "$:/core/modules/parsers/binaryparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "title": "$:/core/modules/parsers/csvparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "title": "$:/core/modules/parsers/htmlparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "title": "$:/core/modules/parsers/imageparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "title": "$:/core/modules/utils/parseutils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "title": "$:/core/modules/parsers/pdfparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "title": "$:/core/modules/parsers/textparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "title": "$:/core/modules/parsers/videoparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/import.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/import.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "title": "$:/core/modules/pluginswitcher.js",
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "title": "$:/core/modules/saver-handler.js",
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "title": "$:/core/modules/savers/andtidwiki.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t    link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "title": "$:/core/modules/savers/beaker.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/custom.js": {
            "title": "$:/core/modules/savers/custom.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t//   Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "title": "$:/core/modules/savers/download.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "title": "$:/core/modules/savers/fsosaver.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitea.js": {
            "title": "$:/core/modules/savers/gitea.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/github.js": {
            "title": "$:/core/modules/savers/github.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitlab.js": {
            "title": "$:/core/modules/savers/gitlab.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/hyperdrive.js": {
            "title": "$:/core/modules/savers/hyperdrive.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "title": "$:/core/modules/savers/manualdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "title": "$:/core/modules/savers/msdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "title": "$:/core/modules/savers/put.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "title": "$:/core/modules/savers/tiddlyie.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "title": "$:/core/modules/savers/twedit.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "title": "$:/core/modules/savers/upload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/server/authenticators/basic.js": {
            "title": "$:/core/modules/server/authenticators/basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/authenticators/header.js": {
            "title": "$:/core/modules/server/authenticators/header.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/routes/delete-tiddler.js": {
            "title": "$:/core/modules/server/routes/delete-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-favicon.js": {
            "title": "$:/core/modules/server/routes/get-favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-file.js": {
            "title": "$:/core/modules/server/routes/get-file.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-index.js": {
            "title": "$:/core/modules/server/routes/get-index.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-login-basic.js": {
            "title": "$:/core/modules/server/routes/get-login-basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-status.js": {
            "title": "$:/core/modules/server/routes/get-status.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler-html.js": {
            "title": "$:/core/modules/server/routes/get-tiddler-html.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler.js": {
            "title": "$:/core/modules/server/routes/get-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddlers-json.js": {
            "title": "$:/core/modules/server/routes/get-tiddlers-json.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/put-tiddler.js": {
            "title": "$:/core/modules/server/routes/put-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/server.js": {
            "title": "$:/core/modules/server/server.js",
            "text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/browser-messaging.js": {
            "title": "$:/core/modules/browser-messaging.js",
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "title": "$:/core/modules/startup/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/CSSescape.js": {
            "title": "$:/core/modules/startup/CSSescape.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "title": "$:/core/modules/startup/favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "title": "$:/core/modules/startup/info.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "title": "$:/core/modules/startup/load-modules.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "title": "$:/core/modules/startup/password.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/plugins.js": {
            "title": "$:/core/modules/startup/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "title": "$:/core/modules/startup/render.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "title": "$:/core/modules/startup/rootwidget.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard  mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "title": "$:/core/modules/startup.js",
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "title": "$:/core/modules/startup/story.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "title": "$:/core/modules/startup/windows.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t    srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "title": "$:/core/modules/story.js",
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "title": "$:/core/modules/storyviews/classic.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "title": "$:/core/modules/storyviews/pop.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "title": "$:/core/modules/storyviews/zoomin.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "title": "$:/core/modules/syncer.js",
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "title": "$:/core/modules/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "title": "$:/core/modules/upgraders/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "title": "$:/core/modules/upgraders/system.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
            "text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/crypto.js": {
            "title": "$:/core/modules/utils/crypto.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/csv.js": {
            "title": "$:/core/modules/utils/csv.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
            "text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&amp;\").replace(d,\"&lt;\").replace(e,\"&gt;\").replace(f,\"&para;<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "title": "$:/core/modules/utils/dom/animator.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "title": "$:/core/modules/utils/dom/browser.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "title": "$:/core/modules/utils/dom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "title": "$:/core/modules/utils/dom/http.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "title": "$:/core/modules/utils/dom/modal.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "title": "$:/core/modules/utils/dom/notifier.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "title": "$:/core/modules/utils/dom/popup.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n        \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "title": "$:/core/modules/utils/dom/scroller.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t    srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "title": "$:/core/modules/utils/edition-info.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "title": "$:/core/modules/utils/fakedom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "title": "$:/core/modules/utils/filesystem.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/linkedlist.js": {
            "title": "$:/core/modules/utils/linkedlist.js",
            "text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
            "module-type": "utils",
            "type": "application/javascript"
        },
        "$:/core/modules/utils/logger.js": {
            "title": "$:/core/modules/utils/logger.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "title": "$:/core/modules/utils/parsetree.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "title": "$:/core/modules/utils/performance.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "title": "$:/core/modules/utils/pluginmaker.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/transliterate.js": {
            "title": "$:/core/modules/utils/transliterate.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "title": "$:/core/modules/utils/utils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(regex, exports.escape);   // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/\\x08/g, '\\\\b')           // backspace\n\t\t.replace(/\\x0c/g, '\\\\f')           // formfeed\n\t\t.replace(/\\t/g, '\\\\t')             // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-confirm.js": {
            "title": "$:/core/modules/widgets/action-confirm.js",
            "text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "title": "$:/core/modules/widgets/action-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-log.js": {
            "title": "$:/core/modules/widgets/action-log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "title": "$:/core/modules/widgets/action-navigate.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-popup.js": {
            "title": "$:/core/modules/widgets/action-popup.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "title": "$:/core/modules/widgets/action-setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "title": "$:/core/modules/widgets/browse.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "title": "$:/core/modules/widgets/button.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "title": "$:/core/modules/widgets/checkbox.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "title": "$:/core/modules/widgets/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "title": "$:/core/modules/widgets/count.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/diff-text.js": {
            "title": "$:/core/modules/widgets/diff-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "title": "$:/core/modules/widgets/draggable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "title": "$:/core/modules/widgets/droppable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "title": "$:/core/modules/widgets/dropzone.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "title": "$:/core/modules/widgets/edit-binary.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "title": "$:/core/modules/widgets/edit-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "title": "$:/core/modules/widgets/edit.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "title": "$:/core/modules/widgets/element.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "title": "$:/core/modules/widgets/encrypt.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "title": "$:/core/modules/widgets/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/eventcatcher.js": {
            "title": "$:/core/modules/widgets/eventcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "title": "$:/core/modules/widgets/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "title": "$:/core/modules/widgets/image.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "title": "$:/core/modules/widgets/importvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "title": "$:/core/modules/widgets/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "title": "$:/core/modules/widgets/link.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "title": "$:/core/modules/widgets/list.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/log.js": {
            "title": "$:/core/modules/widgets/log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "title": "$:/core/modules/widgets/macrocall.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "title": "$:/core/modules/widgets/navigator.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\");  \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "title": "$:/core/modules/widgets/password.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/qualify.js": {
            "title": "$:/core/modules/widgets/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "title": "$:/core/modules/widgets/radio.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/range.js": {
            "title": "$:/core/modules/widgets/range.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\",   handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\",    handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\",     handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) {  // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "title": "$:/core/modules/widgets/raw.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "title": "$:/core/modules/widgets/reveal.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t    defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "title": "$:/core/modules/widgets/scrollable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "title": "$:/core/modules/widgets/select.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "title": "$:/core/modules/widgets/set.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "title": "$:/core/modules/widgets/text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "title": "$:/core/modules/widgets/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "title": "$:/core/modules/widgets/transclude.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "title": "$:/core/modules/widgets/vars.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "title": "$:/core/modules/widgets/view.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "title": "$:/core/modules/widgets/widget.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning  that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "title": "$:/core/modules/widgets/wikify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "title": "$:/core/modules/wiki-bulkops.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "title": "$:/core/modules/wiki.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t//         indexOf unless we have a new\n\t\t\t\t\t//         position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\")                                       // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\")                                 // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\")                                     // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\")                                         // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\");                                        // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/CupertinoDark": {
            "title": "$:/palettes/CupertinoDark",
            "tags": "$:/tags/Palette",
            "name": "Cupertino Dark",
            "description": "A macOS inspired dark palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
        },
        "$:/palettes/DarkPhotos": {
            "title": "$:/palettes/DarkPhotos",
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DesertSand": {
            "title": "$:/palettes/DesertSand",
            "tags": "$:/tags/Palette",
            "name": "Desert Sand",
            "description": "A desert sand palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
        },
        "$:/palettes/GruvboxDark": {
            "title": "$:/palettes/GruvboxDark",
            "name": "Gruvbox Dark",
            "description": "Retro groove color scheme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "https://github.com/morhetz/gruvbox",
            "text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
        },
        "$:/palettes/Nord": {
            "title": "$:/palettes/Nord",
            "name": "Nord",
            "description": "An arctic, north-bluish color palette.",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
            "text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarizedDark": {
            "title": "$:/palettes/SolarizedDark",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision dark colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedDark",
            "text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
        },
        "$:/palettes/SolarizedLight": {
            "title": "$:/palettes/SolarizedLight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedLight",
            "text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
        },
        "$:/palettes/SpartanDay": {
            "title": "$:/palettes/SpartanDay",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Cold, spartan day colors",
            "name": "Spartan Day",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
        },
        "$:/palettes/SpartanNight": {
            "title": "$:/palettes/SpartanNight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Dark spartan colors",
            "name": "Spartan Night",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
        },
        "$:/palettes/Twilight": {
            "title": "$:/palettes/Twilight",
            "tags": "$:/tags/Palette",
            "author": "Thomas Elmiger",
            "type": "application/x-tiddler-dictionary",
            "name": "Twilight",
            "description": "Delightful, soft darkness.",
            "text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-raw": {
            "title": "$:/core/templates/canonical-uri-external-raw",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "condition": "[<count>compare:lte[1]]",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
        },
        "$:/core/save/all-external-js": {
            "title": "$:/core/save/all-external-js",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
        },
        "$:/core/templates/tiddlywiki5.js": {
            "title": "$:/core/templates/tiddlywiki5.js",
            "text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
        },
        "$:/core/templates/tiddlywiki5.js/tiddlers": {
            "title": "$:/core/templates/tiddlywiki5.js/tiddlers",
            "text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
        },
        "$:/core/templates/tiddlywiki5-external-js.html": {
            "title": "$:/core/templates/tiddlywiki5-external-js.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
        },
        "$:/core/templates/html-div-skinny-tiddler": {
            "title": "$:/core/templates/html-div-skinny-tiddler",
            "text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/server/static.sidebar.wikitext": {
            "title": "$:/core/templates/server/static.sidebar.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
        },
        "$:/core/templates/server/static.tiddler.html": {
            "title": "$:/core/templates/server/static.tiddler.html",
            "text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
        },
        "$:/core/templates/server/static.tiddler.wikitext": {
            "title": "$:/core/templates/server/static.tiddler.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/Actions/new-image": {
            "title": "$:/core/ui/Actions/new-image",
            "tags": "$:/tags/Actions",
            "description": "create a new image tiddler",
            "text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-journal": {
            "title": "$:/core/ui/Actions/new-journal",
            "tags": "$:/tags/Actions",
            "description": "create a new journal tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-tiddler": {
            "title": "$:/core/ui/Actions/new-tiddler",
            "tags": "$:/tags/Actions",
            "description": "create a new empty tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
            "text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>>  filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Updates": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
            "caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
            "text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"&#91;&#91;<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/GitHub": {
            "title": "$:/core/ui/ControlPanel/Saving/GitHub",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/GitLab": {
            "title": "$:/core/ui/ControlPanel/Saving/GitLab",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
        },
        "$:/core/ui/ControlPanel/Saving/Gitea": {
            "title": "$:/core/ui/ControlPanel/Saving/Gitea",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Stylesheets": {
            "title": "$:/core/ui/ControlPanel/Stylesheets",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
            "second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-current": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from current",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from shadow (if any)",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/state/showeditpreview": {
            "title": "$:/state/showeditpreview",
            "text": "no"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n  tabindex={{$:/config/EditTabIndex}}\n  focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n  cancelPopups=\"yes\"\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/linkify": {
            "title": "$:/core/ui/EditorToolbar/linkify",
            "caption": "{{$:/language/Buttons/Linkify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Linkify/Hint}}",
            "icon": "$:/core/images/linkify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((linkify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/rotate-left": {
            "title": "$:/core/ui/EditorToolbar/rotate-left",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/rotate-left",
            "caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
            "description": "{{$:/language/Buttons/RotateLeft/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/transcludify": {
            "title": "$:/core/ui/EditorToolbar/transcludify",
            "caption": "{{$:/language/Buttons/Transcludify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Transcludify/Hint}}",
            "icon": "$:/core/images/transcludify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((transcludify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/SessionTiddlers": {
            "title": "$:/core/Filters/SessionTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[haschanged[]]",
            "description": "{{$:/language/Filters/SessionTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>>  default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Diff": {
            "title": "$:/core/ui/ImportPreviews/Diff",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Diff}}",
            "text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
        },
        "$:/core/ui/ImportPreviews/DiffFields": {
            "title": "$:/core/ui/ImportPreviews/DiffFields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
            "text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
        },
        "$:/core/ui/ImportPreviews/Fields": {
            "title": "$:/core/ui/ImportPreviews/Fields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Fields}}",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Text": {
            "title": "$:/core/ui/ImportPreviews/Text",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Text}}",
            "text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
        },
        "$:/core/ui/ImportPreviews/TextRaw": {
            "title": "$:/core/ui/ImportPreviews/TextRaw",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
            "text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
        },
        "$:/core/ui/KeyboardShortcuts/advanced-search": {
            "title": "$:/core/ui/KeyboardShortcuts/advanced-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((advanced-search))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
            "title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((change-sidebar-layout))",
            "text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-image": {
            "title": "$:/core/ui/KeyboardShortcuts/new-image",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-image))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-journal": {
            "title": "$:/core/ui/KeyboardShortcuts/new-journal",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-journal))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-tiddler": {
            "title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-tiddler))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/save-wiki": {
            "title": "$:/core/ui/KeyboardShortcuts/save-wiki",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((save-wiki))",
            "text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
        },
        "$:/core/ui/KeyboardShortcuts/sidebar-search": {
            "title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((sidebar-search))",
            "text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
        },
        "$:/core/ui/KeyboardShortcuts/switcher": {
            "title": "$:/core/ui/KeyboardShortcuts/switcher",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((layout-switcher))",
            "text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
        },
        "$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
            "title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((toggle-sidebar))",
            "text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
        },
        "$:/snippets/LayoutSwitcher": {
            "title": "$:/snippets/LayoutSwitcher",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
            "text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Explorer": {
            "title": "$:/core/ui/MoreSideBar/Explorer",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Explorer/Caption}}",
            "text": "<<tree \"$:/\">>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/drafts": {
            "title": "$:/core/ui/PageTemplate/drafts",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"  tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "name": "{{$:/language/PageTemplate/Name}}",
            "description": "{{$:/language/PageTemplate/Description}}",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/PaletteManager": {
            "title": "$:/PaletteManager",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
        },
        "$:/core/ui/RootTemplate": {
            "title": "$:/core/ui/RootTemplate",
            "text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
        },
        "$:/core/ui/SideBarSegments/page-controls": {
            "title": "$:/core/ui/SideBarSegments/page-controls",
            "tags": "$:/tags/SideBarSegment",
            "text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
        },
        "$:/core/ui/SideBarSegments/search": {
            "title": "$:/core/ui/SideBarSegments/search",
            "tags": "$:/tags/SideBarSegment",
            "text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-subtitle": {
            "title": "$:/core/ui/SideBarSegments/site-subtitle",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-title": {
            "title": "$:/core/ui/SideBarSegments/site-title",
            "tags": "$:/tags/SideBarSegment",
            "text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
        },
        "$:/core/ui/SideBarSegments/tabs": {
            "title": "$:/core/ui/SideBarSegments/tabs",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
        },
        "$:/core/ui/SwitcherModal": {
            "title": "$:/core/ui/SwitcherModal",
            "subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
            "class": "tc-modal-centered",
            "text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagPickerTagTemplate": {
            "title": "$:/core/ui/TagPickerTagTemplate",
            "text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoFocus": {
            "title": "$:/config/AutoFocus",
            "text": "title"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultMoreSidebarTab": {
            "title": "$:/config/DefaultMoreSidebarTab",
            "text": "$:/core/ui/MoreSideBar/Tags"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditMode/fieldname-filter": {
            "title": "$:/config/EditMode/fieldname-filter",
            "first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
            "second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
        },
        "$:/config/EditTabIndex": {
            "title": "$:/config/EditTabIndex",
            "text": "1\n"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/webp": {
            "title": "$:/config/EditorTypeMappings/image/webp",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heic": {
            "title": "$:/config/EditorTypeMappings/image/heic",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heif": {
            "title": "$:/config/EditorTypeMappings/image/heif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/NewImageType": {
            "title": "$:/config/NewImageType",
            "text": "jpeg"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "https://tiddlywiki.com/library/v5.1.23/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/RegisterPluginType/plugin": {
            "title": "$:/config/RegisterPluginType/plugin",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/theme": {
            "title": "$:/config/RegisterPluginType/theme",
            "text": "no"
        },
        "$:/config/RegisterPluginType/language": {
            "title": "$:/config/RegisterPluginType/language",
            "text": "no"
        },
        "$:/config/RegisterPluginType/info": {
            "title": "$:/config/RegisterPluginType/info",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/import": {
            "title": "$:/config/RegisterPluginType/import",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
            "title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
            "text": "yes"
        },
        "$:/config/ShortcutInfo/add-field": {
            "title": "$:/config/ShortcutInfo/add-field",
            "text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search": {
            "title": "$:/config/ShortcutInfo/advanced-search",
            "text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search-sidebar": {
            "title": "$:/config/ShortcutInfo/advanced-search-sidebar",
            "text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/change-sidebar-layout": {
            "title": "$:/config/ShortcutInfo/change-sidebar-layout",
            "text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
        },
        "$:/config/ShortcutInfo/delete-field": {
            "title": "$:/config/ShortcutInfo/delete-field",
            "text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept": {
            "title": "$:/config/ShortcutInfo/input-accept",
            "text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept-variant": {
            "title": "$:/config/ShortcutInfo/input-accept-variant",
            "text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
        },
        "$:/config/ShortcutInfo/input-cancel": {
            "title": "$:/config/ShortcutInfo/input-cancel",
            "text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/input-down": {
            "title": "$:/config/ShortcutInfo/input-down",
            "text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-left": {
            "title": "$:/config/ShortcutInfo/input-tab-left",
            "text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-right": {
            "title": "$:/config/ShortcutInfo/input-tab-right",
            "text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
        },
        "$:/config/ShortcutInfo/input-up": {
            "title": "$:/config/ShortcutInfo/input-up",
            "text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/layout-switcher": {
            "title": "$:/config/ShortcutInfo/layout-switcher",
            "text": "{{$:/language/LayoutSwitcher/Description}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/linkify": {
            "title": "$:/config/ShortcutInfo/linkify",
            "text": "{{$:/language/Buttons/Linkify/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/new-image": {
            "title": "$:/config/ShortcutInfo/new-image",
            "text": "{{$:/language/Buttons/NewImage/Hint}}"
        },
        "$:/config/ShortcutInfo/new-journal": {
            "title": "$:/config/ShortcutInfo/new-journal",
            "text": "{{$:/language/Buttons/NewJournal/Hint}}"
        },
        "$:/config/ShortcutInfo/new-tiddler": {
            "title": "$:/config/ShortcutInfo/new-tiddler",
            "text": "{{$:/language/Buttons/NewTiddler/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/save-wiki": {
            "title": "$:/config/ShortcutInfo/save-wiki",
            "text": "{{$:/language/Buttons/SaveWiki/Hint}}"
        },
        "$:/config/ShortcutInfo/sidebar-search": {
            "title": "$:/config/ShortcutInfo/sidebar-search",
            "text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/toggle-sidebar": {
            "title": "$:/config/ShortcutInfo/toggle-sidebar",
            "text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
        },
        "$:/config/ShortcutInfo/transcludify": {
            "title": "$:/config/ShortcutInfo/transcludify",
            "text": "{{$:/language/Buttons/Transcludify/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SwitcherTargets/layout": {
            "title": "$:/config/SwitcherTargets/layout",
            "text": "$:/snippets/LayoutSwitcher"
        },
        "$:/config/SwitcherTargets/language": {
            "title": "$:/config/SwitcherTargets/language",
            "text": "$:/snippets/languageswitcher"
        },
        "$:/config/SwitcherTargets/palette": {
            "title": "$:/config/SwitcherTargets/palette",
            "text": "$:/core/ui/ControlPanel/Palette"
        },
        "$:/config/SwitcherTargets/theme": {
            "title": "$:/config/SwitcherTargets/theme",
            "text": "$:/core/ui/ControlPanel/Theme"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/SyncSystemTiddlersFromServer": {
            "title": "$:/config/SyncSystemTiddlersFromServer",
            "text": "no"
        },
        "$:/config/Tags/MinLength": {
            "title": "$:/config/Tags/MinLength",
            "text": "0"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/input-tab-left": {
            "title": "$:/config/shortcuts-mac/input-tab-left",
            "text": "ctrl-Left"
        },
        "$:/config/shortcuts-mac/input-tab-right": {
            "title": "$:/config/shortcuts-mac/input-tab-right",
            "text": "ctrl-Right"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-mac/new-image": {
            "title": "$:/config/shortcuts-mac/new-image",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-mac/new-journal": {
            "title": "$:/config/shortcuts-mac/new-journal",
            "text": "ctrl-J"
        },
        "$:/config/shortcuts-mac/new-tiddler": {
            "title": "$:/config/shortcuts-mac/new-tiddler",
            "text": "ctrl-N"
        },
        "$:/config/shortcuts-mac/save-wiki": {
            "title": "$:/config/shortcuts-mac/save-wiki",
            "text": "meta-S"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts-not-mac/new-image": {
            "title": "$:/config/shortcuts-not-mac/new-image",
            "text": "alt-I"
        },
        "$:/config/shortcuts-not-mac/new-journal": {
            "title": "$:/config/shortcuts-not-mac/new-journal",
            "text": "alt-J"
        },
        "$:/config/shortcuts-not-mac/new-tiddler": {
            "title": "$:/config/shortcuts-not-mac/new-tiddler",
            "text": "alt-N"
        },
        "$:/config/shortcuts/add-field": {
            "title": "$:/config/shortcuts/add-field",
            "text": "enter"
        },
        "$:/config/shortcuts/advanced-search": {
            "title": "$:/config/shortcuts/advanced-search",
            "text": "ctrl-shift-A"
        },
        "$:/config/shortcuts/advanced-search-sidebar": {
            "title": "$:/config/shortcuts/advanced-search-sidebar",
            "text": "alt-Enter"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/change-sidebar-layout": {
            "title": "$:/config/shortcuts/change-sidebar-layout",
            "text": "shift-alt-Down"
        },
        "$:/config/shortcuts/delete-field": {
            "title": "$:/config/shortcuts/delete-field",
            "text": "shift-alt-D"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/sidebar-search": {
            "title": "$:/config/shortcuts/sidebar-search",
            "text": "ctrl-shift-F"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/input-accept": {
            "title": "$:/config/shortcuts/input-accept",
            "text": "Enter"
        },
        "$:/config/shortcuts/input-accept-variant": {
            "title": "$:/config/shortcuts/input-accept-variant",
            "text": "ctrl-Enter"
        },
        "$:/config/shortcuts/input-cancel": {
            "title": "$:/config/shortcuts/input-cancel",
            "text": "Escape"
        },
        "$:/config/shortcuts/input-down": {
            "title": "$:/config/shortcuts/input-down",
            "text": "Down"
        },
        "$:/config/shortcuts/input-tab-left": {
            "title": "$:/config/shortcuts/input-tab-left",
            "text": "alt-Left"
        },
        "$:/config/shortcuts/input-tab-right": {
            "title": "$:/config/shortcuts/input-tab-right",
            "text": "alt-Right"
        },
        "$:/config/shortcuts/input-up": {
            "title": "$:/config/shortcuts/input-up",
            "text": "Up"
        },
        "$:/config/shortcuts/layout-switcher": {
            "title": "$:/config/shortcuts/layout-switcher",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/linkify": {
            "title": "$:/config/shortcuts/linkify",
            "text": "alt-shift-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/save-wiki": {
            "title": "$:/config/shortcuts/save-wiki",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/shortcuts/toggle-sidebar": {
            "title": "$:/config/shortcuts/toggle-sidebar",
            "text": "alt-shift-S"
        },
        "$:/config/shortcuts/transcludify": {
            "title": "$:/config/shortcuts/transcludify",
            "text": "alt-shift-T"
        },
        "$:/config/ui/EditTemplate": {
            "title": "$:/config/ui/EditTemplate",
            "text": "$:/core/ui/EditTemplate"
        },
        "$:/config/ui/ViewTemplate": {
            "title": "$:/config/ui/ViewTemplate",
            "text": "$:/core/ui/ViewTemplate"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/copy-to-clipboard": {
            "title": "$:/core/macros/copy-to-clipboard",
            "tags": "$:/tags/Macro",
            "text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
        },
        "$:/core/macros/diff": {
            "title": "$:/core/macros/diff",
            "tags": "$:/tags/Macro",
            "text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
        },
        "$:/core/macros/dumpvariables": {
            "title": "$:/core/macros/dumpvariables",
            "tags": "$:/tags/Macro",
            "text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "created": "20170715180840889",
            "modified": "20170715180914005",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/keyboard-driven-input": {
            "title": "$:/core/macros/keyboard-driven-input",
            "tags": "$:/tags/Macro",
            "text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
            "second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
            "text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "title": "$:/core/macros/timeline",
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n      <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n        <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n          <li class=<<toc-item-class>>>\n            <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n              <<toc-caption>>\n            </$list>\n            <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n          </li>\n        </$set>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n    <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n    </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n    <li class=<<toc-item-class>>>\n      <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n          <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-selective-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=<<__selectedTiddler__>>>\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=<<__template__>>>\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tree": {
            "title": "$:/core/macros/tree",
            "tags": "$:/tags/Macro",
            "text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/utils": {
            "title": "$:/core/macros/utils",
            "text": "\\define colour(colour)\n$colour$\n\\end\n"
        },
        "$:/snippets/minifocusswitcher": {
            "title": "$:/snippets/minifocusswitcher",
            "text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/snippets/peek-stylesheets": {
            "title": "$:/snippets/peek-stylesheets",
            "text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/PluginLibrary": {
            "title": "$:/tags/PluginLibrary",
            "list": "$:/config/OfficialPluginLibrary"
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/SideBarSegment": {
            "title": "$:/tags/SideBarSegment",
            "list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        }
    }
}
Home
The following tiddlers were imported:

# [[aHR]]
# [[All games]]
# [[Android]]
# [[averageSession]]
# [[Filter by rating]]
# [[Home]]
# [[HTML5]]
# [[In-Browser]]
# [[Linux]]
# [[macOS]]
# [[metadataViewTemplate]]
# [[next/previous game]]
# [[OriginalUrl]]
# [[ratingViewTemplate]]
# [[Windows]]
no
https://itch.io/b/902/indie-bundle-for-palestinian-aid
Itch Palestine Bundle
no
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Appearance
$:/core/ui/SideBar/Open
no


{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n  outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n        background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n  vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n  font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition:  min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n    line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n    font-size: 0.8em;\n    margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n    align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n    margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n    padding: 2px 7px;\n    font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n    margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n    text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n    margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n    \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n    \tlist-style-type: none;\n    \tpadding-left: 0;\n    \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n    \tpadding-left: 1em;    \n}\n\n.tc-tree button { \n    \tcolor: #acacac;\n}\n\n.tc-tree svg {\n     \tfill: #acacac;\n}\n\n.tc-tree span svg {\n    \twidth: 1em;\n    \theight: 1em;\n    \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n    \tcolor: lightgray;\n}\n\nselect {\n        color: <<colour select-tag-foreground>>;\n        background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n  -moz-tab-size: 4;\n  tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n  line-height: 1.15; /* 1 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n  margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n  font-family:\n    system-ui,\n    -apple-system, /* Firefox supports this but not yet `system-ui` */\n    'Segoe UI',\n    Roboto,\n    Helvetica,\n    Arial,\n    sans-serif,\n    'Apple Color Emoji',\n    'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n  height: 0; /* 1 */\n  color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n  text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n  font-family:\n    ui-monospace,\n    SFMono-Regular,\n    Consolas,\n    'Liberation Mono',\n    Menlo,\n    monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n  font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n  text-indent: 0; /* 1 */\n  border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  font-family: inherit; /* 1 */\n  font-size: 100%; /* 1 */\n  line-height: 1.15; /* 1 */\n  margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n  text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n  -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n  border-style: none;\n  padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n  outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n  box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n  padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n  vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n  -webkit-appearance: textfield; /* 1 */\n  outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button; /* 1 */\n  font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n  display: list-item;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
        }
    }
}
870px
786px
fixed-fluid
<p><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><em></em><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><br></p>
<p><strong>THE IMAGE IS HOTEL TO THE BRAIN&nbsp;</strong></p>
<p>Check in today!! 10 Beautiful Postcards - a wonderful pile of rubble to sift through on your computer. A resort of many rooms for your eyes and hands to drift around - 200+ mangled collage ruins, flattened into pleasure palaces for you to uncover and explore. Investigate the dimension's mysterious economy. Visit and review multiple themed locations. Take snapshots of your friend, the void - or simply have fun relaxing by the pool. A fun and upbeat game for new w<del></del>avers of all ages. Won't you come dwell in my house?<br></p>
<p>Assembled by <strong>thecatamites&nbsp;</strong><br>with music by <strong>NEW VADERS</strong> (<a href="https://trashtronix.bandcamp.com/" rel="nofollow noopener">Goblet Grotto, Magic Wand</a>)<br>postcards by <strong>Emilie Reed</strong> (<a href="https://coleo_kin.itch.io/">Duck Ted Bundy</a>)<br>and ominous murals by <strong>Alex Degen</strong> (<a href="http://koyamapress.com/projects/soft-x-ray-mindhunters/" rel="nofollow noopener">Soft X-Ray / Mindhunters</a>)<br></p>
<p>Estimated play time is 2 hours. Comes for PC / MAC / LINUX. Controlled with the arrow keys or WASD as you prefer. Thank you for l@@king.</p><p>[NOTE: 32 and 64 bit Mac versions available but unnotarized files may cause Catalina issues for all I know]</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/g334qBswGKc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MTgucG5n/original/rMrF6R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MTkucG5n/original/qJwbse.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MjgucG5n/original/OdRMqT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MzEucG5n/original/P8LqAl.png]]
<p>10 games, each made in a week! Some were a bit of a bust, others were pretty rad.<br></p>
<p>These games are simple prototypes, proof of concepts, or unfinished works. This bundle serves as a bit of a time capsule for me, but also for the curious or those who might go on a similar journey!</p>
<hr>
<p></p>
<p><strong>Week 1</strong> - DRIFTING Through Time<br>Theme: 10 seconds or less.<br><br>Turning your car sideways is<strong> SO COOL</strong> it <strong>FREEZES TIME</strong>! Drift to stop time, get as many laps as you can before time runs out!</p>
<hr>
<p></p>
<p><strong>Week 2 </strong>- Dog Ownership Simulator<br>Theme:<strong> </strong>Durational</p>
<p>Play with your dog! Click and drag to give it a spin, swipe on poos to clean them up!</p>
<hr>
<p><strong>Week 3</strong> - Chillin' Bayside<br>Theme: Melbourne</p>
<p>A simple little physics toy inspired by summer holidays on the great ocean road. Kinda like playing around in a bath - click and hold the mouse to push stuff around :)</p>
<hr>
<p><strong>Week 4</strong> - Paint the Town Red<br>Theme: Colour</p>
<p>Bounce around the world and paint as you go, cherry tomato! A game dedicated to a personal friend of mine.</p>
<hr>
<p><strong>Week 5</strong> - RONG<br>Theme: Phsyics</p>
<p>An inter-dimensional pong remix, RONG has you sticking it out for the highest score! Made in collab. with <a href="https://divlauren.itch.io/" target="_blank">divlauren</a>!</p>
<hr>
<p><strong>Week 6</strong> - ???<br>Theme: Legedermain</p>
<p>Originally supposed to be about a magician who had his many hats stolen, this unfinished puzzle platform has never seen the light of day.</p>
<hr>
<p><strong>Week 7</strong> - Pineapple Pipeline<br>Theme: Camerawork</p>
<p>A simple skateboarding game down an infinite half-pipe. This game was inspired by fish-eye lenses used in skateboarding videos.</p>
<hr>
<p><strong>Week 8</strong> - Tandem Toobs<br>Theme: Gift</p>
<p>I made this game as a <strong>gift</strong> for my parents. Currently unfinished, but intended to be a co-op platformer, each player controls one half of two cylinders, and has to co-ordinate to move around.</p>
<hr>
<p><strong>Week 9</strong> - Beach Bird Volleyball<br>Theme: Minigame<br></p>
<p></p>
<p>Beach Bird Volleyball stars buff seagulls using their floppy fists to fight it out in games of volleyball.</p>
<hr>
<p><strong>Week 10</strong> - Mouse racing game<br>Theme: Weird Input</p>
<p><span class="">This game is played by turning your mouse upside down and revving up the mousewheel like a pullback car.</span></p>
<hr>
<p><strong>Week 11</strong> - Spider Playground<br>Theme: Playground</p>
<p><span class="">Spider playground is a unfinished little sandbox where you can explore a climable(ish) playground as a tiny spider.</span><br></p>
<hr>
<p>You may notice that some of these projects are already available for free on my page. That is no mistake! This package will have all my games <strong>as they were completed</strong> when I was working through my game-a-week journey. The games I've chosen to upload separately might receive updates in the future, and some already have. <br></p>
<p></p>
<p>This bundle is an honest record of my successes and failures. I've also decided to charge for this, as truthfully there was a lot of labour put into these projects. If you're not interested in strange and possibly broken games, check out my page for finished works. But if you do, I hope they can bring you as much joy as they've brought me :)<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDAuZ2lm/original/JmGsfK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDEuZ2lm/original/3%2FHGUQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDIuZ2lm/original/%2BhQRd%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDMuZ2lm/original/JMoD42.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDQuZ2lm/original/zFZnCO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDUuZ2lm/original/0eqEXI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDguZ2lm/original/V8LQqN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3MTMuZ2lm/original/1tB6YZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3NjIuZ2lm/original/Xcb%2F6%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3ODQuZ2lm/original/1mRuIt.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODQxNjIuZ2lm/original/7hh7an.gif]]

<p><strong><a href="https://itch.io/b/619/10mg-collection"><img src="https://img.itch.zone/aW1nLzQzOTk3MjcucG5n/original/UiBg0r.png" loading="lazy"></a><br></strong></p>
<p><strong>10mg</strong>&nbsp;is a collection of 10 minute long games, a tiny dose of something special.</p>
<p><em>Dating is competitive<br>Marriage is co-operative<br>Can you play nice&nbsp;enough to prevent the collapse of your relationship?</em></p>
<h2>Love&nbsp;in the age of coronavirus</h2>
<p><strong>Locked In is the first truly&nbsp;<em>two-player visual novel,</em>&nbsp;simulating the breakdown of a marriage during lockdown.</strong></p>
<ul><li><strong>Two sides of the story: </strong>Each player controls a character as they argue their case.</li><li><strong>Multiple endings:</strong> Can you work together to&nbsp;settle the argument&nbsp;in an amicable way for your child?</li><li><strong>Real life:&nbsp;</strong><em></em><strong></strong>Based on interviews with real people in tense lockdown&nbsp;situations, and set in the UK about 3 weeks into a total lockdown.</li></ul>
<p>Discuss the game further on our <a href="https://discord.gg/hk6wbtk" target="_blank" rel="nofollow noopener">Discord</a>.</p>
<h2>Controls</h2>
<p>Player 1:&nbsp;Up/down arrows or W/S, space to submit.</p>
<p>Player 2: Mouse to select, click to submit.</p>
<h2>Credits</h2>
<p>A game by <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener">Chard</a> and <a href="https://twitter.com/antony_de_fault" rel="nofollow noopener">de Fault</a></p>
<p>Audio by <a href="https://twitter.com/rickyzaudio" target="_blank" rel="nofollow noopener">Ricky Z</a></p>
<p>Additional programming by <a href="https://twitter.com/JohnCGXIII" target="_blank" rel="nofollow noopener">John Connor</a></p>
<p>Check out <a href="https://farfewgiants.itch.io" target="_blank">our other games</a> for more atmospheric experiences.</p>
<p><a href="https://10min.games/presskit/" target="_blank" rel="nofollow noopener">PRESSKIT</a> for streamers and press.</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/oGkgZ23V65Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzNTgxODYuZ2lm/original/gBIlAY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDMucG5n/original/3fomq7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDQucG5n/original/Bzjve%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDUucG5n/original/I8Gx6C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDcucG5n/original/UG%2FjLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDYucG5n/original/4TWOw2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDgucG5n/original/53pv3l.png]]
<figure><a href="https://itch.io/b/619/10mg-collection" target="_blank"><img src="https://img.itch.zone/aW1nLzQzNzk0MDEucG5n/original/QaonYJ.png" alt="10mg Bundle" title="10mg Bundle" loading="lazy"></a><br><strong>10mg</strong> is a collection of 10 minute long games, a tiny dose of something special.<br></figure>
<p><strong>SEALED ESTATE</strong>&nbsp;is psychological horror game, in which you are locked inside by a creature ready to hunt you down, whilst you figure out how to escape from the estate you have been locked inside. who lived here? who are the voices haunting your every step?</p>
<p>What you will find in your exploration:</p>
<ul><li>Lights are not working in the home.</li><li>An enigmatic creature hunting you down.</li><li>other creatures laying in wait, staring at you.</li></ul>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/H0CKxdwURX4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTYucG5n/original/Iij%2BZl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTcucG5n/original/gthwUy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTgucG5n/original/2PSYZT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTkucG5n/original/nw6jIz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MjAucG5n/original/CwbCqO.png]]
<p>You are the newly asigned leader of a crime gang.</p>
<p>It's your job to lead your gang and your allies to success while risking everything and put your own comrades in danger.</p>
<p>Will you manage to keep your gang safe as you climb your way up?</p>
<p>This is a solo-rpg where you yourself make the story about your leader, their gang and the challenges that they face.</p>
<p>The PDF might be hard to read but zooming in helps. Otherwise there is also a clean-text version that you can edit and is for various accessibility issues.</p>
<p>To play this you'll need: Something to write on and a d12.<br><br><br></p>

[img width=500 [https://img.itch.zone/aW1nLzM4OTU4MzUuanBn/original/ZD444w.jpg]]
<p>Some simple pixel art weapons for use in your projects. Feel free to use them in free or commercial projects. I'll be expanding/improving on this collection as time goes by.</p>
<p><strong>Permissions:</strong></p>
<p>-You may use this in both free and commercial projects.</p>
<p>-You may edit these assets as you wish.</p>
<p>-You may <strong>not </strong>sell or redistribute these assets as your own.</p>
<p>-Credit is not necessary but appreciated.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNzYyNy81OTUzNjI3LnBuZw==/original/x2xp2v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNzYyNy81OTUzNjI4LnBuZw==/original/Aqu36Z.png]]
<h3>2-3-5-7 is a game to test how well you recognise prime numbers.</h3>
<p>Swipe left and right to answer if a given number is prime, and see how high a chain of correct answers you can reach.</p>
<p>With 3 different difficulty levels, you can tune the challenge to your preferences.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTUuanBn/original/PpdGOG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTYuanBn/original/rMvgNK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTguanBn/original/d0X7vR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTcuanBn/original/1BLjiJ.jpg]]
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYwOTIzNzQucG5n/original/pZtUIV.png" loading="lazy"></h3>
<p class="text-center"><a href="https://www.instagram.com/admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTE5MDkucG5n/original/GEWI9y.png" alt="Instagram" title="Instagram" loading="lazy"></a>&nbsp;&nbsp; <a href="https://twitter.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTE5MjUucG5n/original/QaEOvv.png" alt="Twitter" title="Twitter" loading="lazy"></a>&nbsp;&nbsp; <a href="https://www.reddit.com/r/admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTIxNjkucG5n/original/UUfRwU.png" alt="Reddit" title="Reddit" loading="lazy"></a> &nbsp; <a href="https://www.facebook.com/Admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYxMjA3NzQucG5n/original/Ae1a2A.png" alt="Facebook" title="Facebook" loading="lazy"></a>&nbsp;&nbsp; <a href="https://ko-fi.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTIxODYucG5n/original/eaz2Az.png" alt="Ko-fi" title="Ko-fi" loading="lazy"></a></p>
<p class="text-center">Patreons get this pack, future updates, requests and more!</p>
<p class="text-center"><a href="https://www.patreon.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTI1OTUucG5n/original/DjlmOJ.png" alt="Patreon" title="Patreon" loading="lazy"></a><br></p>
<h4 class="text-center">Like it? Let me know in the comments!</h4>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDIucG5n/original/Aw0NqG.png" loading="lazy"></h3>
<p>This type of character does not hold any tools in his hand, he is the base of all the classes. You can see the previews on the side bar.<br></p>
<p><strong>BASICS</strong><br>Idle (4),Walk (8), Run (8), Jump (9), Crouch (4), Hit (7), Death A (7), Death B (7), Death C (10), Step-Back (6), Dodge (10), Slide (8)</p>
<p><strong>LADDERS<br></strong></p>
<p><strong>FRONT</strong>: Intro (1), Climb (4), Slide (1), Exit (1)<strong><br></strong><strong>SIDE</strong>: Intro (1), Climb (4), Slide (1),Exit Up (5), Exit Down (3), Ledge Hang (4), Wall Jump (3), Wall Slide (5)</p>
<p><strong>MELEE<br></strong>Dive Kick (7), Kick Combo (12), Punch Combo (18)</p>
<p><strong>THROWING<br></strong>1x Throw (5), 3x Throw (7), 5x Throw (9), End Throw (16), Normal Throw (3)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDYucG5n/original/lud1Cs.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NDYucG5n/original/riD7vp.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2OTIuZ2lm/original/Gki1vr.gif" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2ODcuZ2lm/original/1p6fOL.gif" loading="lazy"><br></p>
<p><br></p>
<p>This type of character comes with all the wanderer animations holding the swords and shields from my <a href="https://admurin.itch.io/pixel-armory" target="_blank">Armory Pack</a>. Aside from this he also comes with the gladiator animations. <br></p>
<ul><li>10 types of gladiators come, from low level gladiators to mighty ones. </li><li>This also includes legendary variants, the crimson and timeless gladiators.</li><li>Wanderer animations holding different swords and shields.</li></ul>
<p><strong>GLADIATOR: </strong>Block (2), Blocked Hit (5), Block + Thrust (5), Sword Combo (13), Air Combo (9), Shield Rush (7), Charge (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDcucG5n/original/0GuOpJ.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NTAucG5n/original/2WSchu.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUxMzgzNTQuZ2lm/original/2nv4vZ.gif" loading="lazy"><br></p>
<p><strong>Patreons get the first look at the animations, the pack will be uploaded after some time.</strong><br></p>
<p>This type of character comes will all the wanderer animations but this time he is holding a bow. As of right now he is only holding the base bow, 3 unique bows have been made so far and even more will be available when updated. He also brings some marksman animations<br></p>
<ul><li>No variants included yet just the base character</li><li>Base bow included (incomplete)</li></ul>
<p><strong>MARKSMAN: </strong>Single&nbsp;shot&nbsp;(7), Air&nbsp;Shot&nbsp;(10), Floor&nbsp;Shot&nbsp;(9), Jump Shot&nbsp;(15), Quick Shot (4), Precision Shot (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MTIucG5n/original/SGp4gD.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NTYucG5n/original/EpdlEY.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUxMzg1MjUuZ2lm/original/kWN4xY.gif" loading="lazy"><br></p>
<p>This type of character comes with... you guessed, wanderer animations with a staff. I plan on making him be able to hold wands, shields and grimoires (update far from right now)</p>
<ul><li>No variants included yet just the base character
</li><li>Base staff included (incomplete)</li></ul>
<p><strong>MAGE:</strong> Ray (5), Stomp (7), Call the heavens (8), Touch floor (6), Combo floor (11)<br><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjYucG5n/original/g213b4.png" loading="lazy"></h3>
<ul><li>Character Size: 42x29 px</li><li>Sprite Dimensions:&nbsp; Most are 64x48px, death animations are 64x64px</li><li>All classes come with Wanderer, Extended and Climber variants</li><li>Can be used in <strong>UNITY </strong>easily</li><li>Effects/Projectiles <strong>NOT </strong>included</li><li>The pack consists of two directional animations<br>
</li><li>List of animations: 200+
</li><li>Frames 1000+
</li></ul>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjgucG5n/original/A5bmA8.png" loading="lazy">
</h3>
<ul><li>You can use this asset in any game project, personal or commercial</li><li><strong>DO NOT</strong> <strong>resell or redistribute</strong> <strong>AS A GAME ASSET</strong>, it has to be part of a project</li><li>Credit is not required but it is appreciated</li><li>Modify to suit your needs</li><li>You are <strong>NOT </strong>allowed to turn any of my assets to an NFT.</li></ul>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzY0MTMucG5n/original/csb0wi.png" loading="lazy"></p>
<p class="text-center">Click the image to see my asset collections. <br></p>
<p class="text-center"><strong>8 Item Packs (2500+ Items) and 8 UI Packs (1700+ sprites per pack)</strong></p>
<figure><del><a href="https://itch.io/c/1405772/admurins-items" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODQucG5n/original/0wdFn0.png" alt="Admurin's Items" title="Admurin's Items" loading="lazy"></a></del><del><a href="https://itch.io/c/1426784/ui-themes" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODUucG5n/original/YUdCso.png" alt="UI Themes" title="UI Themes" loading="lazy"></a></del></figure>

[img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDEuZ2lm/original/ddUMHX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDMuZ2lm/original/FHkiO5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDQuZ2lm/original/QmPZpZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDYuZ2lm/original/c5Vcum.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDkuZ2lm/original/rlFftY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTEuZ2lm/original/2g776D.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTIuZ2lm/original/nqR3JO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTQuZ2lm/original/PAzEjs.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTUuZ2lm/original/9%2FoyUD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTYuZ2lm/original/k%2FySGT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTguZ2lm/original/vxFOmT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjAuZ2lm/original/98NPs1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjIuZ2lm/original/EHNanz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjMuZ2lm/original/Z0FRx8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjUuZ2lm/original/z4x2hY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjYuZ2lm/original/u%2B5Ufo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjguZ2lm/original/9gM28i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjkuZ2lm/original/g0iiBh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzAuZ2lm/original/gbu0au.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzEuZ2lm/original/R8tpTD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzMuZ2lm/original/vU8o76.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzUuZ2lm/original/AQKDyC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzYuZ2lm/original/PzSMNI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzcuZ2lm/original/ZTlDZ7.gif]]
<p><br></p>
<p><strong>2000:1: A Space Felony</strong> is a murder mystery courtroom drama set aboard the USS Endowment, an interplanetary Spacecraft that has lost communication with Earth.</p>
<p>Utilising your camera and demonstrating your keen detective skills, you must document your findings, and piece together the crew's final hours from the aftermath. This photographic evidence is then applied in a cross-examination of the crime's prime suspect; MAL, the ship's on-board AI system.</p>
<p>If MAL is guilty, it is your responsibility to deactivate him.</p>
<p>A follow-up(ish) to 2016's critically acclaimed(ish) <a href="https://nationalinsecurities.itch.io/disorient-on-the-murder-express" target="_blank">Disorient On The Murder Express</a>, National Insecurities returns with a much more ambitious investigation that walks the line between science and fiction, resulting in some kind of combination of the two.</p>
<p>Read about 2000:1: A Space Felony on:<br><a href="http://www.eurogamer.net/articles/2017-07-31-2000-to-one-a-space-felony-is-the-kubrickest-game-yet" target="_blank" rel="nofollow noopener">Eurogamer<br></a><a href="http://www.pcgamer.com/a-clumsy-detective-investigates-space-murders-in-20001-a-space-felony/" target="_blank" rel="nofollow noopener">PC Gamer<br></a><a href="https://www.rockpapershotgun.com/tag/20001-a-space-felony/" target="_blank" rel="nofollow noopener">Rock, Paper, Shotgun!<br></a><a href="https://www.pcgamesn.com/20001-a-space-felony/unreal-engine-4" target="_blank" rel="nofollow noopener">PCGamesN</a></p>
<p><br></p>
<p>-------------- <strong>GET THIS GAME:</strong></p>
<p><strong>If you are subscribed to Humble Monthly, you already own this game as part of the Humble Trove. If you want it on Steam, you may have to wait a while, we're currently trying to determine our best way forward with that currently precarious platform.</strong><br></p>
<p><strong>For now (and probably forever), the best way to buy this game and support us is right here on itch.io, and we very much appreciate your support. Thank you.<br><br>Email:&nbsp;nationalinsecuritiespresents@gmail.com<br></strong><strong>Twitter: <a href="https://twitter.com/NIPresents" target="_blank" rel="nofollow noopener">@NIPresents</a></strong></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hhTo1_7NAoM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk4OC5wbmc=/original/f%2FmzGW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk4OS5wbmc=/original/5nkfhP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk5MC5wbmc=/original/Jyuxnl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk5MS5wbmc=/original/f7Z%2BPn.png]]
<p>There are currently four older games in the bundle. You can get them individually for cheaper, or you can buy the bundle (for an increased price) which&nbsp;will also get you every game I release on itch in 2021. Future games will be added to the bundle as they are published.</p>
<p>Note:&nbsp;There is no guarantee of what (if anything) I will put out next year. I have several projects close to completion, but the only thing you're getting 100% for sure is the older games. I will be updating this bundle with any developments and new projects as they happen.<br><br>Current list of contents (regularly updated):</p>
<ul><li>Sagas of the Icelanders - a PBtA game about the norse settlement of Iceland in 900AD</li><li>Xenoraptor - a solitaire hybrid boardgame experiment where you're running from an alien creature on a derelict spaceship (think Alien)</li><li>A Singular Quest - a PBtA microgame played with only one move, written as part of the Your Move jam</li><li>Worlds of Troika - a humorous hack of some PBtA ideas on top of Troika</li></ul>
<p>Added 9th of May:<br></p>
<ul><li>Kriegsmesser Zine</li></ul>

[img width=500 [https://img.itch.zone/aW1nLzQ4ODQ4MzYuanBn/original/1az%2BVx.jpg]]
<p>20x20x20 is a tiny maze game, where you must activate the four mysterious orbs to unlock the exit and escape the labyrinth. There are 20 rooms to navigate, and though a way through might not seem obvious at first, never fear! For you possess the uncanny ability to rearrange the rooms by scrolling the rows and columns. Keep an eye out for that meddling labyrinth goblin though...</p>
<p><strong>2020 Edition Update</strong>: Now with optional cheesy music, rudimentary sounds effects and screen-shake!!&nbsp;</p>
<p>Controls are as follows:</p>
<ul><li>left and right arrows to move</li><li>space to jump</li><li>X to scroll columns</li><li>Z to scroll rows</li><li>R to restart</li><li>ESC to exit</li><li>F11 to toggle fullscreen or windowed</li><li>M to toggle music</li><li>S to toggle sound effects</li><li>Shift to toggle screen-shake</li></ul>
<p>The arrows will indicate which rows/columns will move when scrolling.</p>
<p>This is my first game, so all feedback is welcome. Made as part of the GameMaker 20 Jam.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI2OTk2ODYucG5n/original/KTf18t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI3MDYzNDcuZ2lm/original/WF9imy.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI3MDYzNDguZ2lm/original/8EozEB.gif]]
<p><img src="https://img.itch.zone/aW1nLzQ2Njk0NjYucG5n/original/Jb%2FQe1.png" loading="lazy"><br></p>
<p><em>"...at dawn a black cloud came from the horizon; thunderous with wrath. The seven judges of hell raised their torches, lighting the land with their livid flame.&nbsp;</em><em>The earth cried despair to the heavens as daylight turned to darkness and the land was shattered like glass.&nbsp;</em><em>For six days and six nights the tempest raged and gathered fury, and poured over the people like the tides of war.&nbsp;</em><em>All sense and hope was lost, and the gods cowered in heaven..."</em></p>
<p><strong>2400&nbsp;BC</strong> is a hack of <a href="https://jasontocci.itch.io/24xx" target="_blank">Jason&nbsp;Tocci's 24XX</a> about rebuilding community&nbsp;in the aftermath of an environmental catastrophe, thousands of years in the past.</p>
<p>It was&nbsp;inspired by Mesopotamian myth, particularly the Epic of Gilgamesh.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMzMzQzLzQ2Njk4NDMucG5n/original/S5CQGC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzMzQzLzQ2Njk4NDQucG5n/original/Pa61aW.png]]
<p>As graduation looms, true feelings begin to surface. Will Grace find the courage to overcome her shyness and bare her heart to Sera, or will her handsome rival Akira get to her first?</p>
<p>A free VN about being really gay for your best friend. A standalone entry in the NOISZ series, and prequel to NOISZ STΔRLIVHT - made in collaboration between SKY HOUR WORKS and Anarch Entertainment!</p>
<figure><em><img src="https://img.itch.zone/aW1nLzQxMjIwNDIuZ2lm/original/BhYSxO.gif" loading="lazy"></em></figure>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDMuZ2lm/original/HyPuDQ.gif" style="max-width: 100%; font-size: 14px; background-color: rgb(17, 17, 17)" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDQuZ2lm/original/hiWKqM.gif" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDUuZ2lm/original/aVsG2d.gif" loading="lazy"><br></p>
<p>Play the second 2ECONDS,&nbsp;<em>My&nbsp;Heart's&nbsp;Reflection</em>, <a href="https://skyhour.itch.io/2econds-to-starlivht-my-hearts-reflection" target="_blank">here</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hyRfO_kMrMg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjQuanBn/original/gDCSXI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjEuanBn/original/7odRzO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjIuanBn/original/Ljj3l0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjMuanBn/original/ZuaNsD.jpg]]
<p>"The day I put that uniform on, I saw myself in the mirror for the first time. And I dared to think, maybe, just maybe..."<br><br>A free VN about standing up to the world to be yourself. A standalone entry in the NOISZ series, and prequel to NOISZ STΔRLIVHT - made in collaboration between SKY HOUR WORKS and Anarch Entertainment!</p>
<p><em>content warnings: transphobia, homophobia, bullying, family confrontation, threats of physical violence, blackmail, threats to be sent to a mental ward</em></p>
<p>Play the first 2ECONDS,&nbsp;<em>Forever My Diamond</em>, <a href="https://skyhour.itch.io/2econds-to-strlivht-forever-my-diamond" target="_blank">here</a>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/j7lt7IIme3s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1MzkuanBn/original/o3y6Pr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDAuanBn/original/qu%2FqEf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDEuanBn/original/t5DGJp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDIuanBn/original/bkei9v.jpg]]
<p>3 BONES is a bare-bones fantasy role-playing game for a handful of players with a handful of dice. All you need are 3 six-sided dice and some paper for a character sheet: a business card that is blank on one side should be enough! It's perfect for running a one-shot adventure on short notice.&nbsp;Character generation is quick and easy so you can start playing right away. If you want to play "a charming rogue who casts illusions" or "a dwarvish archer who hunts monsters" or a "wizened sage who brews potions", then just write that down with a name and you're over halfway there!</p>
<p>The game includes a minimalist system that is easy to hack and make rulings for to keep the action moving. Also included are several examples of&nbsp;different ways to use the basic rules to represent magic, feats of heroic prowess and derring do, magic items, monsters, and more. (Special thanks to Luka Rejec of&nbsp;<a href="https://wizardthieffighter.itch.io/" target="_blank">WTF Studio</a> for the Creative Commons "Ten-eyed Wurgler"!)&nbsp;You could use it to run quick low-prep adventures in your favorite setting or use the included list of generic medieval fantasy equipment and example adversaries to just wing it and make up an improvisational game session. There is also a one-page adventure--"The Lair of the Wild Hunt" (with maps by Dyson Logos)--to help get you started.&nbsp;</p>
<p>If you want to use the system for long term campaigns, the experience and character development system called "Exploits" turns your "experience points" into a record of your adventures (like a "highlight reel" of your PC's adventuring career). PCs can directly draw on their previous experiences to help them in their future endeavors. Even if you get killed, your legendary Exploits can still inspire your allies to greater successes after you are gone.&nbsp;</p>
<p>Roll the bones and have some fun! Or pick the bones clean to port tasty bits of "3&nbsp;BONES"--such as Exploits,&nbsp;Burdens, and recovery scenes--to season your other favorite games as useful and simple house rules.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk5ODQucG5n/original/iCi6Y6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk4MzMucG5n/original/zIOOXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk4MzUucG5n/original/2i4uq7.png]]

<p>8 Links is a cool &amp; smooth puzzle where your goal is to link tiles. Make the longest chain, score more points and complete all the achievements</p>
<p>How to play:</p>
<p>- tap the squares to place tiles</p>
<p>- try to link as much tiles as you can</p>
<p>- once the bank button is filled up, press it to gain points</p>
<p>- use the crunch to delete a tile if you are blocked</p>
<p><br></p>
<p>If you have a feed back : antonmakesgames@gmail.com&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/TItyjbpQ19M" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDQuZ2lm/original/dZyCJS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzEyMjczMTcuZ2lm/original/wY7NBF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDUuanBn/original/SPfcjr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDYuanBn/original/Zbvc75.jpg]]
<p><img src="https://img.itch.zone/aW1nLzUxNjIzNTYucG5n/original/Sf7IZB.png" loading="lazy"><br>Leaving something behind is a hard task, Niles knows it all too&nbsp;<strong>well</strong>. When a stranger <em>disturbs</em> his peaceful everyday life and routine, he has no choice but to face the past and make some <em>life-changing</em> decisions. 
</p>
<p>Yet,&nbsp;<strong><em>it</em></strong>&nbsp;keeps on beckoning him.<br></p>
<p><br><img src="https://img.itch.zone/aW1nLzUxNjIzODYucG5n/original/g7Gg4t.png" loading="lazy"><br></p>
<p>96 is a short, story-driven horror-esque LGBT+ game.&nbsp;<br>It is set in a small, post-apocalyptic island that has long been left in shambles by an unknown ailment.<br>It was made in RPG Maker MV, but it is more akin to a visual novel game/walking simulator game than an rpg. As such, the narration is prioritized over the gameplay.<br>It is by no means a game suited for a younger audience, please be aware of that.</p>
<p>If you'd like to know more about the game (beware of spoilers), we had some lovely people write articles about it!</p>
<p>Free Game Planet:<br><a href="https://www.freegameplanet.com/96-download-game/" rel="nofollow noopener">https://www.freegameplanet.com/96-download-game/</a></p>
<p>5mg Site:<br><a href="https://www.5mgsite.com/post/96-an-narrative-driven-adventure-where-you-must-take-hard-choices-in-a-desolated-island" rel="nofollow noopener">https://www.5mgsite.com/post/96-an-narrative-driven-adventure-where-you-must-tak...</a></p>
<p>Warp Door:</p>
<p><a href="http://warpdoor.com/2021/03/10/96/" rel="nofollow noopener">http://warpdoor.com/2021/03/10/96/</a><br></p>
<p>Please do check them out if you're interested! :)</p>
<p>Or, if you'd rather watch someone else play it, AlphaBetaGamer made an awesome video on our game!<br></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/ziFM2elPiMg" frameborder="0" allowfullscreen=""></iframe></div>
<p><img src="https://img.itch.zone/aW1nLzUxNjIzNjEucG5n/original/VKGdof.png" loading="lazy"><br></p>
<p>Hi everyone, this is our first game, we hope you’ll like it. It was made in two months, so please keep that in mind. There are no (or very little) custom assets as the challenge was to tell a story with pre-made assets. None of us are native speakers and we apologize for any mistake. Please feel free to contact us if you would like to proofread the game officially.<br>TW : the game is quite dark and heavy and was made with an adult audience in mind, so please be careful.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ziFM2elPiMg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjIuanBn/original/F4gmQ2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjQuanBn/original/Q8jaIj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjMuanBn/original/%2B7C4aQ.jpg]]
<blockquote>the gods gazed down at
humanity and found that, while
they were bright and creative and beautiful, they
were simply unfit to govern themselves. having
neither the time nor the inclination to
oversee their creation, the
gods instead empowered a
new caste of imperators.</blockquote>
<p>Some games let you play as a cat. Some games let you rule over a city as a divinely-empowered god-king. Now you can do both!</p>
<p>A Council of Cats is a micro-ttrpg that casts the players as the overseers of a city you create yourself, struggling to protect their populace from threats both magical and mundane. <br></p>
<p>Play to see if your feline coterie can save their city from utter ruination.<br></p>
<ul><li>Simple d6-based system</li><li>Quick &amp; easy rules for creating characters, cities, and plot elements</li><li>Fully randomizable!</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzQzNzgyMTMuanBn/original/g9h6cS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzQzNzc5MjAucG5n/original/zWndRg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzQzNzc5MjEucG5n/original/TZWcVh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzQzNzc5MjIucG5n/original/G4Jm7H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzQzNzc5MjMucG5n/original/Vt4cUe.png]]
<p>Today's the day! For the first time (finally!), you're old enough to visit the magic crystal market on your own. You've got an empty pack on your back, a shopping list from your magic instructor, and a bit of spending money in your pocket. Your attention jumps between the bustling crowds, colorful shops, and the little crystal spirits flitting to and fro, but you're not worried. You have the whole day to take them all in, and that feels like all the time in the world.</p>
<p><em>A Day at the Crystal Market</em> is a solo tabletop rpg&nbsp;where you play a child-aged magical apprentice running an errand to buy magic crystals for your teacher. You are excited, kind, and enthusiastic. Along the way, you’ll visit the shops, become distracted by the wonder around you, and maybe get a bit of spellcasting practice in. You’ll also interact with and befriend the tiny crystal spirits of the market, who will help you along on your journey. As you collect magic crystals, your spellcasting abilities and the number of spirit friends you might make will grow.</p>
<p>Within the game, you are supposed to gather all of the magic crystals before the day is over, but if you don’t, that’s just fine. Your teacher will understand.</p>
<p>The real goal of the game is to engage in the childlike wonder of being entrusted with a task that is larger than yourself, the childlike joy in observing the world, and the childlike kindness directed where adults might not think to look. It’s about a magical day in which nothing important happens, but everything that happens feels important. It’s about imagining the small details of a world, holding them in your head, inspecting them, and then letting them go.</p>
<p>It’s inspired by the movie <em>Kiki’s Delivery Service</em>, the book <em>Eva Evergreen: Semi-Magical Witch</em> by Julie Abe, and my own experiences visiting mundane markets with kids.</p>
<p><em>A Day at the Crystal Market</em> was created for the RPG-Talk Discord server May 2021 design contest, whose theme was “magic crystals”, as well as the <a href="https://itch.io/jam/carta-jam">Carta Jam</a>.</p>
<p>This work is based on the Carta system (found at <a href="https://peachgardengames.itch.io/carta-srd">https://peachgardengames.itch.io/carta-srd</a>), from Cat McDonald and Peach Garden Games, and licensed for use under the Creative Commons Attribution 3.0 Unported license (<a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">http://creativecommons.org/licenses/by/3.0/</a>)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE0LnBuZw==/original/9xNWl%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE2LnBuZw==/original/OUn%2BC7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE1LnBuZw==/original/FFhKti.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE3LnBuZw==/original/zNcoul.png]]


<p><em>"In this final moment, our hopes, fears and uncertainties come together in action.
We'd joke that there's no going back now, but that's really the point, isn't it?"</em></p>
<p>With those fateful words, you join the team of Hope Labs. A group of scientists &amp; engineers, setting out to change the world.</p>
<p>Except, it all goes wrong. And now the team needs to band together, to fix the machine, to get back to normal, to before it all broke...</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQwODAzMTMuZ2lm/original/vB7c9w.gif" loading="lazy"><br></p>
<p>A Forgetful Loop is a time-based worker-placement puzzle game, where you need to weigh up  which nodes are more important at a given moment; To get closer to the core, closer to the finish line!</p>
<figure><img src="https://img.itch.zone/aW1nLzQwODAzMTUucG5n/original/mztFQV.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzQwODAzMzIucG5n/original/IVKcCX.png" loading="lazy"><br></figure>
<ul><li>About <strong>5 Hours</strong> of content, with some more if you chase full completion</li><li><strong>48 Achievements</strong> to chase, with some tricky ones to challenge your skills</li><li><strong>Controls</strong>: Mouse, with Keyboard shortcuts</li><li>Made for <strong>Windows</strong> - Mac &amp; Linux builds are provided, but aren't tested</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQwODAzMzAuZ2lm/original/Tv0Oxx.gif" loading="lazy"><br></p>
<p><em></em></p>
<p><em>Like the music? <a href="https://mooncircuit.bandcamp.com/album/a-forgetful-loop-original-soundtrack" target="_blank" rel="nofollow noopener">Get the soundtrack here</a><br>Follow-up to <a href="https://bighandinsky.itch.io/gmtk2020" target="_blank">my entry to the GMTK Jam 2020</a>.<br>Check out Freya's work <a href="https://communistsister.itch.io/" target="_blank">here</a>!</em></p>
<p><em>"Jennifer, Isabel, whatever's happening with you, I'm sorry -"<br>"- but we've only got seconds until we loop again."<br>"If you remember this conversation... help us fix the machine!"<br>The loop restarts again.</em></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AsL0ZNCXPms" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2MzQucG5n/original/QTmtEa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2OTIucG5n/original/YofzkP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2MzUucG5n/original/0lQ0%2FR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxNDE3MTYucG5n/original/1z11eA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk3MTUucG5n/original/NZDKKx.png]]
<iframe src="https://www.youtube.com/embed/uWJIkfiKmQk?rel=0" allowfullscreen="" width="552" height="310" frameborder="0">
</iframe>
<h1 style="text-align: center; margin-top: 60px; margin-bottom: 60px">An adorable puzzle game about being a monster and making snowmen</h1>
<p style="width: 320px">
	 Lovingly-crafted puzzle design from 
	<a href="http://draknek.org" rel="nofollow noopener">Alan Hazelden</a>, one of the creators of Sokobond
</p>
<p style="width: 320px; margin-left: 116px">
	<br>
	 Adorable graphics by 
	<a href="https://benjamindav.is" rel="nofollow noopener">Benjamin Davis</a>
</p>
<p style="width: 320px; margin-left: 232px">
	<br>
	 Featuring an enchanting original soundtrack by 
	<a href="https://ghoulnoise.com" rel="nofollow noopener">Priscilla Snow</a>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/uWJIkfiKmQk?rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTQuanBn/original/0ID1G8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTUuanBn/original/gaV7GR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTYuanBn/original/Zn76Ro.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTcuanBn/original/m5X9NB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTguanBn/original/W4O7q2.jpg]]
<p><strong>It is the year 19xx.</strong> The working class of The Empire is brutally oppressed. Out of necessity, there is resistance,&nbsp; protest, and, eventually, Revolution. Due to circumstance and anti-Semitism, the Jewish workers remain isolated. You and your comrades are a secret Jewish rebel unit. Together, you will fight for a better future.<br></p>
<ul><li>One-shot RPG for 3-6 players</li><li>Collaborative mechanics and storytelling similar to Belonging Outside Belonging games</li><li>Queer</li><li>Anti-fascist</li><li>Anti-capitalist</li><li>You'll need a dreidel to play this game</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NjYuanBn/original/Rg3iAx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NzQuanBn/original/JJuE6o.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NzUuanBn/original/6jlNoI.jpg]]


<p>Welcome to the digital album release of "A Light Long&nbsp;Gone", which allows you to listen to individual instruments in any combination you want and explore my music in a more intimate way.</p>
<p>You can watch the complete instrumental mix on <a href="https://www.youtube.com/watch?v=lHuMNT0Mh0g" rel="nofollow noopener">YouTube</a>, which is a recording of the running application that you can interact with.</p>
<p>All of the&nbsp;original songs (which include vocals for the most part)&nbsp;are available for free on <a href="https://www.youtube.com/watch?v=PdDDVfmAoiQ&amp;list=PLvRgeUqSM4fcPrP5Irzxt2ZpgpFCEodnA" target="_blank" style="font-size: inherit" rel="nofollow noopener">YouTube</a><span style="color: inherit; font-size: inherit"></span><span style="color: inherit; font-size: inherit"></span>, in addition to&nbsp;<a href="https://www.youtube.com/redirect?redir_token=QYUV1ejUPEX-Ldh2B_9Ygxqc3yx8MTU4OTYzODgxN0AxNTg5NTUyNDE3&amp;v=lHuMNT0Mh0g&amp;q=https%3A%2F%2Fopen.spotify.com%2Falbum%2F5qJAEeIyTcw4SXkjnsZ2Ix&amp;event=video_description" style="font-size: inherit" rel="nofollow noopener">Spotify</a><span style="color: inherit; font-size: inherit"></span> and various other digital music markets.</p>
<h3>About The Music</h3>
<p>In 2019, I decided to create one song per month. While mostly electronic, it contains instruments such as grand piano, acoustic guitar, vocals, with several additions by guest musicians (cello, violin, trumpet, e-bass, and many more). Most songs can probably be categorized as chill/downtempo, and revolve around dark/depressing themes, with a few rays of hope every now and then.<br></p>
<h3>Guest Musicians &amp; Artists</h3>
<ul><li>Funnycreature | e-guitar, percussion</li><li><a href="https://twitter.com/iarhiee" target="_blank" rel="nofollow noopener">Irene Muñoz</a>&nbsp;| album art</li><li>Jace Greywool | guitar</li><li>Khimitsu | recorder, keyboard, background vocals</li><li><a href="https://www.youtube.com/user/reckoner27cello" target="_blank" rel="nofollow noopener">Lou Dunand-Vincent</a>&nbsp;| cello, violin</li><li>Manuel Kröber | bass</li><li>Mark Valentine | bass</li><li><a href="http://www.onlyintheory.com/" target="_blank" rel="nofollow noopener">Michael Hillard</a>&nbsp;| trumpet</li><li>Moonlyer | guitar, harmonica</li><li>Jared Powell | violin, viola</li><li>Pao Sebastian | recorder, percussion</li><li><a href="https://twitter.com/tipsheda" target="_blank" rel="nofollow noopener">Shane Yach</a>&nbsp;| music video (for "stillstand")</li><li>Sharpet | bass</li><li><a href="https://soundcloud.com/szaladdressing" target="_blank" rel="nofollow noopener">Szaladin</a>&nbsp;| bass</li></ul>
<p>Hint: If you download the game, make sure to read the ReadMe file for a handful of tips!</p>
<p>Thank you for your time!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lHuMNT0Mh0g" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzM0NTUwNzguanBn/original/5AwhSB.jpg]]
<p>A business card sized RPG about finding home. Generate a map over any flat surface with a handful of six-sided dice and journal about your travels across this new world.</p>
<p>This game requires the rules printed in standard business card size, a handful of D6s, some paper and a pencil, and a large flat surface. You will also need time and patience. Finding home is no easy task.</p>
<p>Made for the <a href="https://itch.io/jam/pleasurecardrpg" target="_blank">Pleasure-Not-Business Card RPG Jam</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNjc2LzU1MTczNjUuanBn/original/579epA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNjc2LzU1MTczNjcuanBn/original/FJ8i5D.jpg]]
<p><strong>A Mortician's Tale takes about 1 hour to play. It's a short, but deeply meaningful experience.</strong><br></p>
<p>A Mortician's Tale is a story-driven death positive video game where you play as a mortician tasked with running a funeral home. Take on the role of recent funeral direction graduate Charlie as she learns the ropes of the business and industry. Prepare the bodies of the deceased (via embalming or cremation), attend their funerals and listen to their loved ones' stories, and interact with Charlie's coworkers, clients, and bosses.</p>
<p>A Mortician's Tale is an informative, honest, and sometimes humorous look at the current state of and the future of the western death industry.</p>
<h2>Reviews</h2>
<p>“<strong>One Of 2017's Best Games</strong>... It elicits dark feelings, but asks players to consider where those feelings came from and what makes them dark.”<br>—&nbsp;<a href="https://kotaku.com/one-of-2017s-best-games-is-about-being-a-mortician-1819509818" target="_blank" rel="nofollow noopener">Kotaku</a></p>
<p><strong>One Of Polygon's Best Games of 2017</strong> — "The video game industry is built on the destruction of bodies of all kinds. How refreshing to play a game that asks you to care for them, even after their life has left."<br>— <a href="https://www.polygon.com/2017-best-games/2017/12/18/16781674/best-video-games-2017-top-50-mario-pubg-zelda" target="_blank" rel="nofollow noopener">Polygon</a></p>
<p>“<strong>82/100</strong> — An approachable and thought-provoking meditation on life’s only certainty.”<br>&nbsp;–&nbsp;<a href="http://www.pcgamer.com/a-morticians-tale-review/" target="_blank" rel="nofollow noopener">PC Gamer</a><br><br>“<strong>Recommended</strong> — This is a beautiful game. It scared me. It moved me. Most of all, it made me stop what I was doing and think.”<br>&nbsp;–&nbsp;<a href="https://steamcommunity.com/linkfilter/?url=http://www.eurogamer.net/articles/2017-10-19-a-morticians-tale-review" target="_blank" rel="nofollow noopener">EuroGamer<br></a><a href="https://venturebeat.com/2017/10/16/a-morticians-tale-dissects-the-stigma-of-death/" target="_blank" rel="nofollow noopener"></a></p>
<p>"<strong>8/10</strong> — [A Mortician's Tale] is a short game, only an hour or so long, but it leaves an impact far beyond its runtime. Give it a chance, and it might just change the way you think about death."<br>—&nbsp;<a href="https://www.destructoid.com/review-a-mortician-s-tale-468436.phtml?utm_source=dlvr.it&amp;utm_medium=twitter" target="_blank" rel="nofollow noopener">Destructoid</a></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzE2NDUxNzMucG5n/original/yrsLNn.png" loading="lazy">&nbsp;<img src="https://img.itch.zone/aW1nLzE2NDUxNzIucG5n/original/WNEoEz.png" loading="lazy">&nbsp;<img src="https://img.itch.zone/aW1nLzkwNzUxMC5wbmc=/original/Jb21G%2B.png" loading="lazy">&nbsp;<img src="https://img.itch.zone/aW1nLzkwNzUxMi5wbmc=/original/vgDEVv.png" loading="lazy">&nbsp;<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0AzMmvXHyKQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI4MC5wbmc=/original/JsUaUW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3Ni5wbmc=/original/T9iysF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3Ny5wbmc=/original/w1a00o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3OS5wbmc=/original/3Gqcy6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI4MS5wbmc=/original/mDEJuv.png]]
<p>Adrien, a creature born of a young child’s nightmares, takes a little summer vacation.</p>
<p><em>A NIGHTMARE'S TRIP</em> is a short visual-novel game from the development team behind the upcoming&nbsp;<em>RE: DECEIVED VOICE</em>. Meet strange new characters. Tour around a colorful city. Turn the nightmares of the past into a fantastical dream made real.</p>
<p>Features:<br></p>
<ul><li>Enjoy a 2-3 hour modern-fantasy punk&nbsp;narrative set in familiar places!</li><li>Featuring original art from Moxie Riles (RE: DECEIVED VOICE), Christina Crichlow (Blissful Madness), and Sondelonnel!</li><li>Kinectic Storytelling - To the whim of several dialogue choices, change the story in subtle ways!</li><li>Meet a demon from hell! And play pachinko together?</li><li>Resolve (temporarily) sibling troubles, commit gay crimes, get chewed out by Gaoma, and more!</li><li>Steam keys for itch.io users!</li></ul>
<p>For an additional $7 (USD), you will acquire&nbsp;<em>A NIGHTMARE’S TRIP - FULL ITINERARY EDITION, </em>which&nbsp;comes with both the game and the “Carry-On Luggage’s Contents”, including the following:</p>
<ul><li><strong>A NIGHTMARE'S TRIP - Yume's Sketchbook</strong>&nbsp;(Digital Artbook PDF)</li><li><strong>A NIGHTMARE'S TRIP - CAMERA ROLL</strong>&nbsp;(Folder containing high quality CGs/backgrounds!)</li><li><strong>A NIGHTMARE'S TRIP - Tunes 4 Trip</strong>&nbsp;(Soundtrack Sampler, containing 3 tracks by Arachnibot!)</li></ul>
<p><a href="https://arachnibot.bandcamp.com/releases" rel="nofollow noopener">The soundtrack is available now on Bandcamp!</a></p>
<p>If you enjoy the game, please consider supporting our ongoing projects via <a href="https://www.patreon.com/teamskyhour" rel="nofollow noopener">Patreon</a>!&nbsp;We're just getting started - with you, we can change the world!&nbsp;(probably)</p>
<p><em><u>content warning: violent references (contained in the game's opening prologue), brief mention&nbsp;of a fictitious&nbsp;slur,&nbsp;appearances of both mall/airport security</u></em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Tk0oEh_xQGI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjYuanBn/original/Vv0GN8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjUuanBn/original/3rKPdl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjguanBn/original/wvcREq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjMuanBn/original/IABpDP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjQuanBn/original/A9wrIp.jpg]]
<p><em>A plague of madness spreads across the countryside: people hopelessly repeating strings of numbers and words until their head bursts into flames and they die in shrieking violence. Trek through unhallowed woods, explore the burned ruins of villages and climb a cursed tower full of deadly encounters as you stave off Madness itself -- or succumb to its fiery embrace.</em></p>
<p><strong>A Pestilence of Maths</strong> is a complete MÖRK BORG adventure&nbsp;created by <a href="https://www.ken-lowery.com/" target="_blank" rel="nofollow noopener">Ken Lowery</a> for the <a href="https://itch.io/jam/flk-lore" target="_blank">FÖLK-LORE game jam</a>, featuring a Medieval Gothic spin on Numbers Stations. It is a complete adventure and, likely, a TPK. Best of luck with that.</p>
<p><span></span>&nbsp;Includes a 7-page PDF with tables and original adversaries.</p>
<p>Suggested soundtrack:</p>
<ul><li>L'Enfant De La Forêt, <em><a href="https://enfantdelaforet.bandcamp.com/album/abraxas" target="_blank" rel="nofollow noopener">Abraxas</a></em></li><li>Gost,&nbsp;<em><a href="https://gost1980s.bandcamp.com/album/behemoth" target="_blank" rel="nofollow noopener">Behemoth</a></em></li><li><a href="https://www.irdial.com/conet.htm" target="_blank" rel="nofollow noopener">The Conet Project</a></li></ul>
<p><em>"A Pestilence of Maths" is an independent production by Bannerless Games and is not affiliated with Ockult Örtmästare Games or Stockholm Kartell. It is published under the MÖRK BORG Third Party License.
</em></p>
<p><em>MÖRK BORG is copyright Ockult Örtmästare Games and Stockholm Kartell.</em> 
</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTYuanBn/original/paXe3d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTQuanBn/original/ctTMRI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTUuanBn/original/MFbeZq.jpg]]

<p>Hissssssss</p>
<p>A Snake's Tale is a puzzle game about snakes in cramped places. Clear a path to get to the hole, eat some eggs along the way, and make sure to press all the buttons.</p>
<ul><li>75+ brain-crushing puzzles (okay, not all of them are "brain-crushing" hard)</li><li>5 different environments, each with a unique mechanic</li><li>A whole ton of snakes</li><li>Play with mouse, keyboard, or gamepad</li><li>Procedurally generated art with a unique style</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/23pQmEuueNw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1MC5wbmc=/original/U70rKt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1MS5wbmc=/original/KTC4Qf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk0OS5wbmc=/original/h5Ft%2B%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk0OC5wbmc=/original/dyNj7B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1Mi5wbmc=/original/WrvHBz.png]]
<h3><strong>THE DEAD LORDS HAVE ARISEN!</strong></h3>
<p>The People's Revolution has overthrown the nobles of the realm and seized the Imperial capital of Kynburgh. The Emperor Titan Kyne&nbsp;died cursing the land and all who deposed him. Now the only coin that is left lies buried with the undead Lords who forged the Empire. Delve into the dungeon, twice-kill the dead Lords, and secure the People's Revolution!</p>
<h3><strong>A SINGLE-PLAYER RPG FORGED IN THE DARK</strong></h3>
<p>Using a single-player stream-lined variation of John Harper's&nbsp;<strong>Blades in the Dark</strong>&nbsp;rules, players can quickly generate characters with unique skills and items. As you <strong>delve </strong>you use your creativity and limited resources to overcome 100's of encounters, randomly generated from 9 unique dungeon locations. When your pack is full of broken crowns and Imperial coins you return above ground to the Imperial capital for <strong>downtime </strong>where your character can&nbsp;recover and resupply for their next delve.</p>
<p>If you succumb to your wounds <strong>you </strong><strong>die!</strong></p>
<p>If you become corrupted by diabolism and the wealth of the dungeon&nbsp;<strong>you </strong><strong>die!</strong></p>
<p>If your last torch burns out in the middle of the pitch black dungeon <strong>you </strong><strong>die!</strong></p>
<p>The only way to live is to kill the ghoulish nobility in their crypts, steal back their wealth, and survive to delve again.&nbsp;For the realm! For the people! For the Revolution!</p>
<ul><li><strong>Players</strong>: 1</li><li><strong>Playtime</strong>: 30 minutes&nbsp;per session</li><li><strong>Requirements</strong>: 6 six-sided dice, a deck of playing cards (jokers included) and something to write with. A character sheet and reference sheets are included with the game.</li></ul>
<h2 class="text-right">Credits</h2>
<p class="text-right">Written &amp; designed by&nbsp;<a href="https://www.patreon.com/notwriting" target="_blank" rel="nofollow noopener">Michael Elliott</a></p>
<p class="text-right">Original cover images by&nbsp;<a href="https://unsplash.com/@linussandvide?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="nofollow noopener">Linus Sandvide</a> &amp;&nbsp;<a href="https://unsplash.com/@karson_?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="nofollow noopener">Karson</a>&nbsp;on&nbsp;<a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank" rel="nofollow noopener">Unsplash</a></p>
<p class="text-right">Interior art by&nbsp;<a href="https://pixabay.com/users/openclipart-vectors-30363/" rel="nofollow noopener">Open Clipart Vectors </a>on <a href="https://pixabay.com/" rel="nofollow noopener">Pixabay</a> and <a href="https://publicdomainvectors.org/" rel="nofollow noopener">Public Domain Vectors</a></p>
<p class="text-right">Ink Splashes and Spatters by&nbsp;<a href="https://peachgardengames.itch.io/splash-pack" target="_blank">Peach Garden Games</a> &amp; <a href="https://erinking.itch.io/splatter-backgrounds" target="_blank">Aaron King</a><br></p>
<p class="text-right"><em>Based on&nbsp;<a href="http://www.bladesinthedark.com/" rel="nofollow noopener">Blades in the Dark</a>, a product of One Seven Design, developed and authored by John Harper, and licensed for use under the&nbsp;<a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">Creative Commons Attribution 3.0 Unported license</a>.</em></p>
<h3>Music For Killing Dead Lords</h3>
<iframe src="https://open.spotify.com/embed/playlist/65WEVCByC2RIizOvgkSh9S" width="300" height="380" frameborder="0"><span class=""></span></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTYucG5n/original/%2BQyR0k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTcucG5n/original/8VVJnE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTgucG5n/original/Q1hph%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTkucG5n/original/jNHCxZ.png]]
<p>In a seaside town, Hannah spends her days asleep and her nights wandering the empty beach. Too anxious to hold down a job or go to school, her roommate thinks she's hopeless. Hannah is inclined to agree.&nbsp;<br></p>
<p>On one of these monotonous nights, a spaceship crashes on the beach! The cute alien inside disrupts Hannah's life... and her entire sense of self.</p>
<p><strong>Update:</strong></p>
<ul><li>Version 1.2 adds a Spanish translation courtesy of <a href="https://twitter.com/Dunkelheyt" target="_blank" rel="nofollow noopener">Dunkelheyt</a>!</li><li>Version 1.1 resolves all bugs and adds a cute little visual things, courtesy of Valeatory!</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5NDAuanBn/original/7nHHGr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5MzguanBn/original/cvPhij.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5MzkuanBn/original/KbFmVr.jpg]]
<p><a href="https://shop.jameschip.io" rel="nofollow noopener">Order the print edition here</a></p>
<blockquote>It is common knowledge that trees can not scream; although when the axe first touched that great oak, you would not have been so sure. The crack of blade on wood rang out around the forest and, in an instant, the cries of uncountable numbers of birds arose from the canopy. The axe kept coming, blow after blow and the sound of life in the forest grew louder with each strike; while the tree just stood there, gravely still and silent.<br><br>Finally the tree fell and, when the sound of it hitting the floor had died, there was nothing left but silence. Not the silence of the forest, the silence of a million unseen lives busily going about their jobs. No, this was a complete and deathly silence, as if the forest itself had ceased with the tree. </blockquote>
<p><strong>A wood heart</strong> is a story writing and map drawing game for 2 -4 players played with a deck of tarot cards, a six sided dice and pencils, paper and erasers.</p>
<p>As a group you all play the roles of the spirits in that live in the forest telling stories about the events that happen to the <strong>Wood Heart</strong> that sits in the very centre of the forest. Humans have recently moved into the area and have started building larger and larger settlements. How will this affect your forest, and will it survive?</p>
<p>The game comes as an A5 pdf or a <a href="https://shop.jameschip.io" rel="nofollow noopener">print edition</a></p>
<hr>
<p><strong>A wood Heart</strong> is a game about trees. It is a game about the insects, the soil they call home and the rivers that cut through it. It is a game about humans and the impact that they have on these things. It is a game about the survival of nature.</p>
<p><strong>It is a warning.</strong></p>
<p><em><em><img src="https://img.itch.zone/aW1nLzUxOTIzMzUucG5n/original/m5U978.png" loading="lazy"></em></em><br></p>
<h2>The Wood Heart</h2>
<p>At the very centre of every forest is <strong>A Wood Heart</strong>. It is the beating heart of the forest that keep life going. It is the magical seed that started life in the forest and sustains it. In return the forest protects the <strong>Wood Heart</strong>. These two things can not survive without each other, if one dies the other dies too.</p>
<p>At the start of the game as a group you will design <strong>A Wood Heart</strong> for your forest. Each <strong>Wood Heart</strong> is different, and the forest that grows up around it will be just as different from any other forest that came before.</p>
<p>You will fill this forest with flora and fauna that are only found in this particular place alone, and also the spirits that have come to call this forest home.</p>
<p>Together you will create a map of the forest and the human settlements around it, this map will change and evolve over time as the game progresses.<br></p>
<h2>The Humans</h2>
<p>At first the humans seemed harmless, they arrived with small tents and lived a while by the river. Then one day the first tree fell. Then another and another. They began clearing land to grow plants that out competed the native flora, they took the fruit from the forest that fed the animals and, when that grew scarce, they took the animals too.</p>
<p>Can your forest sustain the presence of the humans? Will the spirits that live in this place be able to push them back or will they be driven from this place?</p>
<hr>
<h1>Print copies</h1>
<p><strong>A Wood Heart</strong> is also available as a colour printed A5 zine from the following places:</p>
<p>
<a href="https://shop.jameschip.io" rel="nofollow noopener">James's Chip Shop</a><br>
<a href="https://loottheroom.uk/shop" rel="nofollow noopener">Loot the Room</a><br>
<a href="https://www.rookspress.com/products" rel="nofollow noopener">Rooks Press<br></a>
<a href="https://www.exaltedfuneral.com/collections/neoteric-codices/products/a-wood-heart" rel="nofollow noopener">Exalted Funeral<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDA4ODYuanBn/original/c4tnmL.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDA4ODguanBn/original/YCkEzF.jpg" loading="lazy"><br>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzcucG5n/original/ugD9oD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzgucG5n/original/Wal5xi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzkucG5n/original/yY5nP5.png]]
<h1>Aarre Safari Ride</h1>
<p>is a game about collecting key parts inside the jungle with a jeep. Most of the key parts are hidden inside coconuts due to some weird and unforeseen circumstance.&nbsp;</p>
<p>Keys will open one of the countless chests you own for some reason and the chests might contain car parts, car paints or stickers. You can make your own jungle environment with the stickers!</p>
<p>This is a game about fun and collecting stuff and just driving endlessly and breaking coconuts with a hammer and making sticker pages so go ahead and download. This is available on almost everything. You can probably&nbsp;even sideload it on an android TV as long as you have a mouse and keyboard connected! Yay!<br></p>
<p><img src="https://img.itch.zone/aW1nLzIyOTQzMTAucG5n/original/PGJF6s.png" style="color: inherit; font-size: inherit" loading="lazy">&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/eBx3PEpFz6I" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODMuanBn/original/H9T7u%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODUuanBn/original/%2FOVs6T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODQuanBn/original/%2FAK9Um.jpg]]
<p>12 new backgrounds for Troika! all with colorful collage illustrations straight from the depths of public domain art.&nbsp;<br></p>
<p>And more:</p>
<ul><li>15 new spells;</li><li>A Mollusk Merchant, bringing (possibly cursed)&nbsp;wares from the deep;</li><li>18 terrible curses that might fall upon greedy adventures;</li><li>Some thalassophobia that might have seeped in a bit too much.</li></ul>
<p>Abyss Below is an independent production by Ricardo&nbsp;Ramos and is not affiliated with Melsonian Arts Council.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTMwNjUucG5n/original/LSZqUg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5NDAucG5n/original/rr4bEB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5MzkucG5n/original/uLWuX9.png]]
<p>AcChen is a simple to learn, arcade style 'find the matching tile' game. Master the 60 different level and various bonus maps in the single player campaign. Unlock new levels by beating the clock or play in 'chill mode' without any pressure: no timer, no score just happy tile hunting ( but also no level unlocking ).<br></p>
<h4>Feature list</h4>
<ul><li> fast arcade style 'find the matching tile' game
</li><li> two game modes: arcade and 'chill' mode
</li><li> 60 levels + various bonus maps
</li><li> 3 different bonus level types: fill the board, spot the match, find the match
</li><li> three relaxing sound tracks
</li></ul>
<h4>Rules</h4>
<p>Clear the board by finding two items with identical symbols. The tiles will disappear when you can 'connect' them with a line, which has two or less corners ( right angles ) in it and no other part is blocking the way. Advance to the next level by clearing the board. If you run out of time before you finish a map, you lose.</p>
<p>A map can contain tiles in up to 3 layers. You might combine tiles of different layers. If you pick one tile from the top layer and one from the bottom layer, only tiles on the top layer block the way.</p>
<p>In general: if you pick items from different layers, the upper most selected items layer is used for the search algorithm. Sounds difficult but if you give it a try, you will figure in no time... ;)</p>
<p>Tiles with the same symbol might be located on top of each other. So the fastest pick is not always the best.<br></p>
<h4>Bonus Level</h4>
<p>Every 3rd level you play is a bonus level. There are three different types of bonus level:</p>
<p>1.) You start with 4 tiles and have to fill up the map. Every time you remove a pair, 4 new tiles will appear. <br>2.) Two visible tiles swap its places quickly for several times. Spot the last position.<br>3.) Classic 'find a matching pair' on the turned deck.</p>
<p>If you manage to complete a bonus level, you receive a 100 point bonus. If the time runs out, you advance to the next level. After finishing a bonus level you receive an extra Hint-Item ( see below ). If you are not up for bonuses, you can skip the bonus level.<br></p>
<h4>Special Items</h4>
<p><strong>Solid Tiles</strong><br>Solid tiles cannot be removed.</p>
<p><strong>Yin Yang</strong><br>If you pick a pair of Yin Yang the next picked symbol will disappear from the current map. If the Yin Yang is the last pair you pick, you can use this special on the next map.</p>
<p><strong>Time Bonus Item</strong><br>From time to time animated hourglasses appear on a symbol for a few seconds. If you manage to remove this item you receive 15 extra seconds.</p>
<p><strong>Hint Item</strong><br>If you need a hint during the game, tap the Hint Item. If available, a matching pair will be selected. It will disappear if you tap on it. After finishing a Bonus Level you receive an extra Hint Item. You can collect up to 3 Hint Items.</p>
<p><strong>Scoring</strong><br>The first successful pick scores 0 points. The next pick within 3 seconds, scores 4 points, within 5 seconds 2 point. After finishing a level, the remaining time is added to you score.</p>
<p><strong>Highscore and Achievements</strong><br>AcChen uses Steams Leaderboard - you can share your score with players around the world. Discover the 8 unlock-able achievements.</p>
<p><strong>Game History</strong><br>In the early 90s I played a game called 'Match It' at the local Arcade - I spent quite some coins on it :o. A few years later three friends and me picked up the game mechanics. We coded a version for the Atari ST and Amiga. The game-play was extended in may ways. It was released under the name 'Sarakon'. The game was programmed in 68k assembler. After I got a NEXTSTATION I did rewrite the game and released it under the name AcChen. Over the time I did also port it to the NintendoDS, iOS and OSX.<br></p>
<p>Note that there is a Steam , iOS and OSX version&nbsp; that supports online highscores and achievements.<br></p>
<p>Have fun :)</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/D83BdwaeY6E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDYuanBn/original/OhTjP6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDAuanBn/original/o2%2B9XT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDEuanBn/original/qzW5KM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDMuanBn/original/6POTi9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDQuanBn/original/%2BS%2F8rz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDUuanBn/original/63Ss3D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDIuanBn/original/%2BNjRYI.jpg]]

<p>Adjacency is an abstract puzzle game about colors and shapes.</p>
<p>Minimal yet challenging, for the casual or perfectionist player.</p>
<p>Featuring 60 puzzles and original sound and music by Haley De Boom.</p>
<p>Available for <strong>Windows</strong>, <strong>Mac</strong>, and <strong>Linux</strong>. Purchase includes a <strong>Steam</strong> key.</p>
<p><br></p>
<p>"A great deal of thought has gone into creating smart but not exasperating challenges…a strong puzzle concept, well-realised." - <a href="https://www.rockpapershotgun.com/2017/06/15/best-new-steam-games-june/" target="_blank" rel="nofollow noopener">Rock Paper Shotgun</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lZ9TGL08JTQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODcyLnBuZw==/original/ry10WS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc5LnBuZw==/original/M2M6QU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODgwLnBuZw==/original/01IFhW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc0LnBuZw==/original/0bW%2FWy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc1LnBuZw==/original/ijrWy4.png]]
<p>In <em>Adrift </em>you will find yourself cast into uncertainty, but encouraged to be kind to yourself in order to survive, maybe even thrive. This is accomplished through prompted reflections and journal entries.<br></p>
<p><em>Adrift </em>can be experienced alone or with friends near and far. It is designed to be engaged with for just a few minutes a day over several days, but is easily adapted to other experiences.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzQyNTg0NjMuanBn/original/ymY%2BSq.jpg]]

<h2><a href="https://store.steampowered.com/app/1528260/AdventNEON/" target="_blank" style="font-size: 40px" rel="nofollow noopener">WISHLIST THE GAME ON STEAM!</a></h2>
<p></p>
<h3><a href="https://forms.gle/Ag5KMrfHHqRRsaSM6" target="_blank" rel="nofollow noopener">Send feedback and bugs!</a></h3>
<p>Hyperactive 2D action platformer made by just me!<br><br>Punch robot cops while double-dashing and comboing them at lightspeed. When you think they've got the drop on you? Dash through them to freeze time, run circles around them, and wind up a satisfying counterattack!<br><br>Once you hit 100% of your power, transform and show everyone how unstoppable you truly are!<br><br>AdventNEON's got a focus on vibrancy, responsiveness and freedom. You've got simple, tight (and remappable!) inputs, fluid and versatile movement options and extremely fast combat to allow you to jump around and beat down however the heck you want. My goal is for the game itself to be so fun that you'd be willing to open it up just to screw around in the hub world. I.e. the game&nbsp;I'd&nbsp;want to play when other games just aren't cutting it for me at the time.<br><br>It takes a ton of inspirations from all the games and characters I enjoyed growing up, so you might notice some of that here!<br><br>You're put into the shoes of Neon, a special android with the ability to harness Resonance energy and rapidly scale in power. The harder the beatdown Neon dishes out, the stronger they become, until they're a nigh unstoppable snowball of devastation. The catch? Neon can't maintain this power when getting hit, nor can they take a lot of hits in general. Neon is incredibly fast and powerful, but can only maintain that extreme potential when they're avoiding damage and continuously dishing it out.<br><br>If you can fully maintain the flow of Resonance though, you'll transform, and be able to let loose 100% of your power! Become faster, stronger, brighter, meaner and greener as everything in your path struggles to keep pace with you in this form.<br><br>Like Celeste? You can use its dash twice! Go nuts. Avoid everything. Counterattack through your enemies. Heck, wavedash jump cancel™ if you want.<br><br>Enjoy platform fighters? Neon's got a fully fleshed out directional moveset, along with the ability to send enemies offscreen to KO them with a satisfying explosion!<br><br>Combat lets you cancel virtually everything into everything else! Make your own combos! Hit, stun and run! Start up that combo with a dash! Unleash a barrage of punches and stop time like it's a [redacted] reference! Fake out enemies with repeated dashes! Teleport behind the enemy and end them with a powerful Break attack!<br><br>You don't need to remember any optimal combo routes or buttons; just hit and don't get hit and you'll win regardless of your playstyle!</p>
<p><br></p>
<h3><u>DEFAULT CONTROLS/SETTINGS</u></h3>
<h4>Remap them in the options menu.</h4>
<p>[Action]: [Keyboard input] -- [Gamepad input]</p>
<p>Move: WSAD/Arrows -- Left Stick/D-Pad</p>
<p>Jump: Space/C -- Bottom&nbsp;Face/Left Bumper</p>
<p>Punch: P/Z -- Left Face/Right&nbsp;Face + Direction</p>
<p>Dash: O/X -- Top Face/Right Bumper + Direction</p>
<p><strong>Break Attack: </strong>Hold Dash + Press Punch&nbsp; + Direction&nbsp;(Can also be done with the Right Stick on Gamepad.)&nbsp;</p>
<p>"Tap up to Jump" can be set.</p>
<p>Gamepad Stick Deadzone can be set between 10% and 85% of the gate radius.</p>
<p>To ensure your gamepad controls are working, you can open a&nbsp;<strong>Visualizer&nbsp;</strong>for your inputs by going to Options -&gt; Video -&gt;&nbsp;<strong>Display Inputs</strong>. These show the real time inputs from your controller regardless of what's happening in the game.</p>
<p><br></p>
<h4>You can support development through a donation here, or through my Ko-Fi at&nbsp;&nbsp;<a href="https://ko-fi.com/neonart" style="font-size: 24px" rel="nofollow noopener">https://ko-fi.com/neonart</a>! Every contribution, even if it's just feedback, is more than appreciated!</h4>
<p><br></p>
<p><a href="https://twitter.com/AdventNEON" target="_blank" rel="nofollow noopener"><img src="https://i.imgur.com/LSZlzn0.png" loading="lazy"></a><br></p>
<p><br></p>
<p><strong>BE SURE TO CHECK OUT THE "HELP THE DEV" MENU IN-GAME FOR MORE WAYS TO CONTRIBUTE!&nbsp;</strong><br></p>
<p>Every little bit helps out!</p>
<p><img src="https://img.itch.zone/aW1nLzUwMzQ2NjUucG5n/original/9e5GjX.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzUwMzQ2NjgucG5n/original/ZFFwUo.png" loading="lazy"><br></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/J9EW5gXFSWU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNjYucG5n/original/LELHJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNDkucG5n/original/dNGeQ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNjMucG5n/original/46zMkM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNjIucG5n/original/DUZOxf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNjAucG5n/original/xSRots.png]]
<figure><img class="custom-bit" src="https://img.itch.zone/aW1nLzUzODIyODkuZ2lm/original/7UOi2q.gif" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p class="text-center">Teach an AI named Bit to make a perfect procedural world.&nbsp;</p>
<p class="text-center"><br></p>
<p><img class="custom-screenshot" src="https://img.itch.zone/aW1nLzUzODIzMzgucG5n/original/t3jvYx.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">A casual experience of exploring the unknown, and talking for a bit.</p>
<p class="text-center"><br></p>
<p><img class="custom-screenshot" src="https://img.itch.zone/aW1nLzUzODIzMzMucG5n/original/isXy20.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">A game by <strong><a href="https://justcamh.itch.io/" target="_blank">JUSTCAMH</a></strong> with music by <strong><a href="https://soundcloud.com/clockmaker1" target="_blank" rel="nofollow noopener">ClockMaker</a></strong></p>
<p class="text-center">Part of the <a href="https://itch.io/b/812/care-package-bundle" target="_blank"><strong>Care Package Bundle</strong></a>, get 7 wholesome games for $7</p>
<p class="text-center"><a href="https://itch.io/b/812/care-package-bundle" target="_blank"><img src="https://img.itch.zone/aW1nLzUzOTAxNTgucG5n/original/pojznZ.png" loading="lazy"></a><br></p>
<p class="text-center"><br></p>
<p class="text-center"></p>
<div class="text-center"><iframe width="500" height="281" frameborder="0" src="https://www.youtube.com/embed/zH8BNYayM4Y" allowfullscreen=""></iframe></div>
<p class="text-center"><br></p>
<p class="text-center">~1 hour of game</p>
<p class="text-center">Recommended; A dedicated GPU + multicore CPU + 4GB memory</p>
<p class="text-center"><br></p>
<p class="text-center"><img class="custom-bit2" src="https://img.itch.zone/aW1nLzUzODI1NjUuZ2lm/original/c6z%2FaU.gif" loading="lazy"><br></p>
<p class="text-center"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zH8BNYayM4Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MTYucG5n/original/1evMU7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MTgucG5n/original/w6myNR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MjMucG5n/original/eCgAz1.png]]
<p>Smash your brain into a Cyberhellscape in Æthernet, a rules-light Occultech Horror Science-Fantasy game based off of <a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a> by <a href="https://gayhalforc.itch.io/">gayhalforc</a>.</p>
<h2>THE WORLD HAS CHANGED</h2>
<p><br>The Internet as we know it ceased to exist after The Incursion, and in its place the sprawling Virtual Hyperreality of the Æthernet stretches horrible and festering in every direction. Plumb its depths in search of riches, miracles and ruins that the keepers of the mundane world will pay heartily for, just beware of the Daemons and UNGODS waiting for you in its depths, hoping to bend and shape your flesh to their own ends.</p>
<p>Make a character in seconds, ruin them for hours. The Player Book contains the minimum essential rules and setting information, and the Ref's Handbook fills in the other rules and tables you need to run the game. <br></p>
<h2>OK, WHAT DO I GET?</h2>
<ul><li>The Player Booklet (Print and Phone versions)</li><li>The Ref Handbook (Print and Phone versions) </li><li>The Sourcebook (Print and Phone versions) †</li><li>A Raw Text file so you can read it and not my godawful handwriting *</li></ul>
<p>† This piece is in development</p><p>* This piece is useable as-is, but will be extended later<br></p>
<h2>WHERE DID THIS COME FROM?</h2>
<p>This game was made as a part of the <a href="https://itch.io/jam/sledgejammer-a-sledgehammer-jam">#Sledgejammer</a> game jam! <br></p>
<p>Based on Sledgehammer by Gayhalforc. Æthernet is an independent work compatible with Sledgehammer but not affiliated with Gayhalforc.</p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzUxMTU4NjUuanBn/original/Ndg%2B6n.jpg]]
<p>AFTER SCHOOL is a coming-of-age story about detention, baseball, gangs and friendship. Join Ellis in his chaotic adventures as he meets others both cute and terrible! Then maybe —&nbsp; finally make a friend?</p>
<ul><li>3 Character routes to explore — Explore the stories of Dante, Adrien and Chester, with sappy friendship endings, the possibility of kissing one of them and some...not-so-good endings.</li><li>3 full CGs, as well as 6 partial CGs to unlock!</li><li>About 30-45 minutes of gameplay per route, with a total of 23k words</li></ul>
<p><strong>Support the game by dropping a donation!</strong></p>
<figure><img src="https://img.itch.zone/aW1nLzE5OTI3MjguanBn/original/w6DbJ3.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p>
</p>
<figure><img src="https://img.itch.zone/aW1nLzE5OTI3MzAuanBn/original/VH%2F%2BUQ.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p><img src="https://img.itch.zone/aW1nLzE5OTI3MzEuanBn/original/kQzRfK.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5OTI3MzIuanBn/original/7wo3Z%2F.jpg" loading="lazy"><br></p>
<p>This is my first full game, so any comments are appreciated!&nbsp;</p>
<p>You may also follow me on <a href="http://twitter.com/fever_fiction" rel="nofollow noopener">Twitter</a> or <a href="http://instagram.com/fever_fiction" rel="nofollow noopener">instagram</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzM3NjI2NjIuanBn/original/E4CWvi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTYuanBn/original/V89lU1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTcuanBn/original/P4yIcT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTguanBn/original/Fe9MVD.jpg]]
<p><strong>Content Warning: Panic, Social Anxiety</strong><br></p>
<p>---</p>
<p>After arriving at college, Joyce struggles with a yet-undiagnosed panic disorder while attempting to find direction and acceptance among their peers.</p>
<p>Their panic disorder distorts the world around them, rendering an otherwise friendly world&nbsp;overwhelming and horrific.</p>
<p>In search of respite, they stumble across their campus's art studio and begins to make peace with themself.</p>
<p>---</p>
<p>CONTROLS:<br>WASD to move, Mouse to look<br>"E" to proceed with dialog.<br>If presented with a choice in dialogue, press ENTER on the highlighted response to confirm it.<br>Use the mouse to solve the connect-the-dots puzzles.</p>
<p>Press 'O' if you need to unlock the cursor!</p>
<p>---</p>
<p>If you're having trouble finishing the game, a full playthrough can be viewed here:</p>
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/5fcTEqI20bI" frameborder="0" allowfullscreen=""></iframe></div>
<p>---</p>
<p></p>
<p>Agoraphobia is being developed by Quaking Aspen Studio, comprised of two college students and long-time friends attempting to make sense of their own worlds through artistic narrative and gameplay.&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/5fcTEqI20bI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MjgucG5n/original/hZ0Ayg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MjkucG5n/original/YTfI%2FU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzAucG5n/original/kq9Hdr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzEucG5n/original/HAVhQ8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzIucG5n/original/S38xLC.png]]
<p>[<a href="https://raulranma.itch.io/agouro/devlog/252084/agouro-portugus" target="_blank">Ver descrição em português</a>]</p>
<p><br></p>
<h2>The Wheel Turns Once Again</h2>
<p>Agouro is a narrative game of inevitable prophecies, inspired by Tarot cards and dark fantasy stories like Kentaro Miura's Berserk and Netflix's The Witcher.<br></p>
<p>In Agouro, you'll perform a ritual to summon the story of a group of people whose lives are intertwined in the threads of destiny. Your decisions will shape the fate of the World, and also your own.</p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<h2>Rules and Mechanics</h2>
<p>Agouro is played with between 3 and 6 players, and each ritual of play takes around 2 to 4 hours.</p>
<p>Players create protagonists by choosing a Path based on one of 20 Major Arcana cards, then use two standard decks of cards (52 cards, 4 suits, no Jokers) to bet in turns, creating scenes that carry the story forward and advance towards the culmination of the prophecy.</p>
<p>The prophecy is inevitable. You play to find out <em>how</em> it happens.</p>
<p>If you want a few more details on how it works and where the mechanics came from, I made <a href="https://twitter.com/raulranma/status/1393123683712049153" rel="nofollow noopener">this twitter thread to explain a little bit</a>.<br></p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<h2>Playtest Version</h2>
<p>
</p>
<p><strong>WARNING:</strong> For now, <strong>Agouro is only available in a playtest digital version</strong>. If you purchase it now, you'll get the finished digital version of the game when development ends.</p>
<p>Future planned updates include, but are not limited to:</p>
<ul><li>Editing and proofreading by other collaborators;</li><li>New illustrations for the Major Arcana;</li><li>Better iconography and character sheet design;</li><li>Sections with examples of play throughout the Book of Omens, to help readers better understand how the rules were meant to work;</li><li>An entire chapter composed of optional rules, hopefully made in collaboration with other designers, as well a section on how to change the game's rules to adjust play to your liking.</li><li>The funding of an actual physical version, hopefully, if enough people show interest this digital version (it will have to be paid for separately, of course).</li></ul>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<p>If you'd like to give me feedback on your experiences playing or reading Agouro, or if you want to pay in R$ or trade a copy of one of your games for it, you can do so by messaging me on twitter <a href="http://twitter.com/raulranma" target="_blank" rel="nofollow noopener">@raulranma</a>, or by sending an e-mail to <a href="mailto:raulranma@gmail.com" target="_blank" rel="nofollow noopener">raulranma@gmail.com</a>.</p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<p><em>The rules for this game are licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener">CC BY-SA 4.0</a>. That means you can create new material based upon them if you wish, as long as you also publish it under this license and give appropriate credit. Table texture on the mock up pictures by <a href="https://unsplash.com/@nate_dumlao" target="_blank" rel="nofollow noopener">Nathan Dumlao</a>.<br></em></p>
<p></p>
<p></p>
<p>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjEuanBn/original/6mhF1t.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjIuanBn/original/sD6eTB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjYuanBn/original/IHnW%2Fa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjcuanBn/original/h8ihOU.jpg]]
<hr>
<h1>READY TO ADD&nbsp;AI TO YOUR RPG?</h1>
<p>AI CARDS offer you an exciting and easy way&nbsp;to enhance your characters with artificial intelligence for use in&nbsp;any fiction*, including&nbsp;tabletop role playing games and other forms of storytelling. With nothing more than two 6-sided dice, some colours, and&nbsp;a wallet-sized&nbsp;CARD, you can program how characters gossip, respond to bargains, react when flirted with, and more!</p>
<p>This modular, cutting-edge RPG tech is ready to be used on its own for a rules-lite, freeform role playing experience OR &nbsp;plugged into your favourite game to help your characters come alive. Use&nbsp;AI CARDS&nbsp;as a&nbsp;GMing tool or&nbsp;to automate&nbsp;your GM-less play.&nbsp; <a href="https://youtu.be/lYZ9B7N6vHM" target="_blank" rel="nofollow noopener">Everything is better with a little AI</a>.</p>
<p><em>*or in real life. I'm not gonna stop you.</em><br></p>
<h2>So... how does it work?</h2>
<h2></h2>
<p><img src="https://img.itch.zone/aW1nLzU1Mzk4MzUucG5n/original/Sw5mih.png" loading="lazy"></p>
<p><br></p>
<p>On each CARD you'll find a 6x6 square grid with four probable responses to a given prompt. Using highlighters, pencil crayons, markers, or whatever colouring tools you have on hand, divide the grid into uneven quadrants — a bigger quadrant means the character is more likely to act that way.&nbsp;</p>
<p>When the situation arises and you need to know how your character will act, roll 2d6 and find the corresponding square on the grid.&nbsp;Think of it like an oracle with probabilities that you adjust for each character depending on their personality.&nbsp;</p>
<p>Fill out a full set of cards for a character and you have a robust set of reactions to rely on whenever you need to answer the question: "how does this character act?"</p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzU1NDU5MTEucG5n/original/17Fgiq.png" loading="lazy"></p>
<p><strong>Example of play: </strong><em>Your friend </em><em>Aviya is usually very low-energy</em><em>&nbsp;from working night shifts at their job.&nbsp;You are going to meet them today and you aren't sure how they are feeling, so you roll 2d6 and get a 5 and a 3, which corresponds to the top left quadrant: stressed</em><em>. W</em><em>hen you see them</em><em>&nbsp;they are hunched over in their chair and gritting their teeth.</em><em>&nbsp;What might be on their mind?</em></p>
<h2>What do I get?</h2>
<p>Your purchase includes the first full&nbsp;set&nbsp;of 10 AI CARDS, including:</p>
<ul><li>Bargain</li><li>Confront</li><li>Courting</li><li>Fashion</li><li>Gossip</li><li>Lies</li><li>Meeting</li><li>Mood</li><li>Threat</li><li>Violence</li></ul>
<p>You are welcome to print the cards at home, have them commercially printed, or use the individual images for online play. (Paint bucket tools work very well for colouring your grid!)<br></p>
<h2>Future Development</h2>
<p>This set of AI CARDS is designed to be a launching-off point. This framework is&nbsp;easy to design and iterate upon, leaving plenty of room for booster packs and hackable content.&nbsp;I may even do a print run at some point.&nbsp;Have any AI you want to see or situations you need CARDS for? Let me know in the comments below! ⬇️</p>
<p>This was designed as part of the&nbsp;<a href="https://itch.io/jam/pleasurecardrpg/entries" target="_blank">Pleasure-not-Business Card RPG Jam</a>.</p>

[img width=500 [https://img.itch.zone/aW1nLzU1Mzk4MzQucG5n/original/3DXhEq.png]]
<h2>FAST-PACED ARENA ACTION</h2>
<p><strong>Akuto: Showdown</strong> (previously known as Akuto: Mad World) is an award-nominated, isometric, <strong>fast-paced action</strong> game where players compete with swords and guns in intense versus matches.<br></p>
<p>The game is set on low poly, diorama arenas where players have to not only watch out for opponents, but also for the environment from killing them.</p>
<p><br></p>
<h2>FEATURES</h2>
<ul><li> Enjoy the intensity and fun of classic couch party games, but with more violence</li><li> A wide range of dynamic levels with environmental hazards</li><li> Fight against your friends in local multiplayer, or play against the bots in one of the many versus modes</li><li> Unlockable achievements, weapons, and HATS!</li><li> Watch highlights captured from previous matches in gallery mode</li></ul>
<p><br></p>
<h2>FAQ</h2>
<p>All purchases come with a Steam key.</p>
<p>The DRM-free version is an old build of Akuto: Showdown due to the final version of the game requiring Steam.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/UOP3__xvcqg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzcuZ2lm/original/hbgRJo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxODEuZ2lm/original/ZNdsg2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzkuZ2lm/original/hNMn00.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxODAuZ2lm/original/9cL52Y.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzguZ2lm/original/XyXSVN.gif]]
<p>Discovering the philosopher's stone turned the wise and kind alchemist into a power hungry, selfish tyrant. Task of stopping him falls upon you, the former apprintice of the alchemist. Discover the secrets of the Alchemist's Castle, survive and destroy the philosopher's stone!</p>
<p>Alchemists's Castle is a 2D side - scroller platformer, inspired by old - school Metroid and Castlevania games.</p>
<p>
</p>
<p>Coming soon to PC, Mac and Linux</p>
<p><br></p>
<h2>Key Features</h2>
<ul><li>Non-linear exploration</li><li>Old-school metroidvania experience</li><li>Intriguing story</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/QPWm2m7PBFk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1MC5qcGc=/original/YZ1AHj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1MS5qcGc=/original/c%2BKCDz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1Mi5qcGc=/original/WcjM2T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1My5qcGc=/original/HlTPVG.jpg]]

<p><strong>Alien Death Mob!</strong></p>
<p>OMG guys, aliens have invaded Earth!&nbsp; Towns, cities, deserts, popular tourist attractions, they're <em>everywhere</em>!&nbsp; Take on the role of Earth's last super soldier or whatever&nbsp;and eliminate the alien menace!&nbsp;&nbsp;</p>
<p>An intense twin stick shooter, blast your way around the world taking on hordes of enemies.&nbsp; Use bullet time to get out of sticky situations.&nbsp; Collect the power ups, but don't forget to keep an eye on your multiplier to get those massive scores!<br></p>
<ul><li>30 missions set at various real world locations</li><li>Bullet time to help out in those desperate situations</li><li>Intense twin stick action</li><li>Loads of Power ups</li><li>Hordes of aliens to blast your way through</li></ul>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/27nU1f-_YgA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTIucG5n/original/8nSm9r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTMucG5n/original/9hS%2FJm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTQucG5n/original/2CFsec.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTUucG5n/original/0%2FK2Kt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTYucG5n/original/%2Br7cix.png]]
<p><strong>About:</strong><br>Alisa is a classic late-90s style horror-themed action adventure&nbsp;game set in a fantasy universe inspired on the 1920s. You play as an Elite Royal Agent called Alisa. While she is chasing a wanted criminal, she ends up in an old victorian mansion. She tries to find a way out while being haunted by materialized/mechanized doll-like humanoids. Can you survive the Dollhouse?<br><br>The Awakening Demo is the first public demo of Alisa.</p>
<p>Wishlist on steam!&nbsp;<a href="https://store.steampowered.com/app/1335530/Alisa/" rel="nofollow noopener">https://store.steampowered.com/app/1335530/Alisa</a></p>
<p><br><strong>System requirements:</strong><br>The game easily runs on older hardware.<br>Minimum (tested) System Requirements:<br>Ram: 2GB (lower is not tested)<br>GPU: Any Video Card compatible with DirectX 10<br>CPU: Intel Duo Core&nbsp;Mobile T7500 (lower not tested)<br>Anything higher than the specifications above will absolutely work.<br><br></p>
<p><strong>Extra Info:</strong><br>If you connect a controller, don't forget to setup the buttons in the Button Config menu (in-game)<br>If something goes wrong with your settings, press F1 + F2 at the main screen (new game, settings, quit) and quit the game and restart is again to reset everything to default settings.<br></p>
<p><strong>Interesting Links:</strong><br>You can join the Discord:&nbsp;<a href="https://t.co/XIqF1CQp4G?amp=1" title="http://discord.gg/p89JtUq" target="_blank" dir="ltr" class="" rel="nofollow noopener"><span class="">http://</span>discord.gg/p89JtUq</a><br>Follow game development progress on Twitter:&nbsp;<a href="https://twitter.com/CasperCroes" rel="nofollow noopener">https://twitter.com/CasperCroes<br></a>Instagram: <a href="https://www.instagram.com/alisagame.exe/" rel="nofollow noopener">https://www.instagram.com/alisagame.exe/<br></a>Website: <a href="http://www.caspercroes.com/" rel="nofollow noopener">http://www.caspercroes.com/</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ssRbtP4D3R0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NjkuZ2lm/original/VAI6SY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NzMuZ2lm/original/Bh6Jx9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NzEuZ2lm/original/mhaomL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTQ5NjcuanBn/original/hJgZzw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTQ5NjYuanBn/original/VoxHmn.jpg]]
<p class="text-center">EPISODE 1:&nbsp;THE MIGHTY ECHO&nbsp;</p>
<p class="text-center">GET IT NOW!</p>
<p><strong></strong></p>
<p><strong></strong>ALL @&nbsp;ONCE&nbsp;is a twine based interactive novel. Take the role of&nbsp;<em>Wyatt Reynolds</em>, your average everyday black teen in the small lake-centered town of Primwood a town where the world is quiet and the mornings are hazed. Where Devils walk the street with pockets full of spice. This young man whose life blinked by without a second thought becomes something more when his mind takes on something new. When the thoughts in his head aren't his own and the reality of reading people's minds comes into play.</p>
<p>This supernatural coming of age story allows you to make decisions that affect your relationships. Read the minds of your enemies and your peers, fall into the wonderful pitfall of love, become your school's therapist and help those where nobody else could. With your friends&nbsp;discover the deeprooted drug problem in your town and see how far powers can take you all. And just what kind of effect they can have on you all. But most importantly when diving into the minds of everyone's struggles and thoughts, through all their love and all their pain can you discover you?</p>
<p><br></p>
<p>All Dev, Writing, and Design were done by&nbsp;<a href="https://projectmarbles.itch.io/" target="_blank" class="">Lawrence</a>.<br></p>
<p>Banner art done by <a href="https://twitter.com/iamneedi" target="_blank" rel="nofollow noopener">Rahul</a></p>
<p>Trailer done by <a href="https://twitter.com/DeDeDeadero" target="_blank" rel="nofollow noopener">Ethan</a></p>
<p><em>(Note for mac users: File is in HTML)</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7B1rm-BqNVg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ0MTgyNTMuanBn/original/%2F4SHcI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ0Mjc3OTYuanBn/original/QBj%2BLe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTUuanBn/original/e6E25g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTQuanBn/original/R1ddmH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTYuanBn/original/t%2Baaet.jpg]]
~~~~<<list-links "[has:field[url]sort[title]]">>
<p><em>“HOSTILE DETECTED,” Chariot reported. Sure enough, an ominous icon had appeared on the heads-up map. It was shaped like a skull. Wearing an eyepatch.</em></p>
<p><em>Justice tapped it with their finger, opening a comms channel. “You’re not authorized to be here!” Justice demanded. “Who are you?”</em></p>
<p><em>“BEAM LASERS CHARGING,” the mech calmly droned.</em></p>
<p><em>“Justice. You’ve gotten sloppy since last I saw you. The Academy not drilling you hard enough?”</em></p>
<p><em>Justice instantly recognized the voice. They could never have forgotten it. “Judgment? Is that you?”</em></p>
<p><em>“LASERS CHARGED,” said Chariot, the skull icon blinking to a targeting reticle. “OPEN FIRE?”</em></p>
<hr>
<p>
</p>
<p><strong>All My Exes are in Mechsuits</strong> is a role playing game for exactly three players.&nbsp;</p>
<p>Imagine a mech anime series, full of heated battles in the cold of space, unforgivable betrayals, and shocking revelations far from home base. In Exes in Mechsuits, we play through a single episode of that anime that contains all three: The moment the pilot meets someone important from their past - flying for the other side.</p>
<p>It can be played either as a live-action role-playing game (or “Larp”) or as a pure tabletop experience. It takes two to three hours to play.<br></p>
<p>Exes in Mechsuits was originally&nbsp;created for the&nbsp;<a href="https://itch.io/jam/sad-mecha-game-jam">#sadmechjam</a>, organized by John Harness and Takuma Okada. Cover art by&nbsp;<a href="https://twitter.com/pinacoladapuppy" rel="nofollow noopener">@pinacoladapuppy</a>.</p>
<p>It is available as a digital pdf,&nbsp;print-ready pdf (print double-sided, then staple it together to create a physical copy), and plaintext. The character sheets are free.</p>
<p><strong>1/24/20 UPDATE:</strong> This new edition of the game adds a ton, including the demo scenario I&nbsp;created for running the game at conventions, safety techniques, revised character creation, and rules to run the game as either a tabletop or larp experience. It's so much better!<br></p>
<hr>
<p><strong>What is this game like?&nbsp;</strong>Listen to the following Actual Play podcasts (both of the original jam edition) to get an idea of how it works.<br></p>
<p>▶ <a href="https://www.youtube.com/watch?v=nI9Wjdil8_0&amp;feature=emb_title" rel="nofollow noopener">Looking For Good livestream</a> (featuring me!).<br></p>
<p>▶ Many Realms podcast: <a href="https://open.spotify.com/episode/6YqDkImYnJT1vtJuWRtH3k" rel="nofollow noopener">Cat's Eye</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/nI9Wjdil8_0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MDkwNDUucG5n/original/wm%2FThb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MTAyNTkucG5n/original/9TC%2F0O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MDkwNTkucG5n/original/osu8VO.png]]
<p><em>Alone In Between</em>&nbsp;is a solo journaling game about being trapped between this world and somewhere else. It is about communication, regrets, and unfinished business. You play as a ghost trapped in your former home struggling to convey a final message to the living left behind.&nbsp;</p>
<p>This game requires a standard deck of 52 playing cards, 1 six-sided die, and a way to record your game, such as pencil and paper.&nbsp;</p>
<p class="text-center">———————</p>
<p><em>Alone In Between</em> is based on <em><a href="https://noroadhome.itch.io/alone-among-the-stars" target="_blank">Alone Among the Stars</a></em> by Takuma Okada.&nbsp;</p>
<p class="text-center">———————<br></p>
<p><em>Alone In Between</em> is part of a game design exercise where I take the same basic game concept and render it as a hack of different games and systems. You can learn more about the project <a href="https://twitter.com/mrmatthew/status/1345064545140674560" target="_blank" rel="nofollow noopener">in this Twitter thread</a>.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjMucG5n/original/Yh3otF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MzIucG5n/original/zsk7hf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjQucG5n/original/WA0ACF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjUucG5n/original/7F9CYd.png]]
<p>Alone In The Grey is an adventure puzzle&nbsp;game where the player must escape from a UFO they have mysteriously awoke in. Uncover clues and solve puzzles to escape and find out the reason for your capture. Hack terminals and find batteries to obtain freedom.</p>
<p>Move around using the WASD keys and move the camera using the mouse. Left click to interact and pick up objects. Right click to drop objects. Shift to run and ctrl to crouch.</p>
<p>This game was made by two developers as a fun project to work on and develop our skills.</p>
<p>William Hughes (Roxra) - Programming / Design - <a href="http://roxra.github.io" target="_blank" rel="nofollow noopener">roxra.github.io</a></p>
<p>Liam Downton (Falconhead) - 3D Modelling / Art / Design</p>
<p><br></p>
<p>Sounds:&nbsp;</p>
<p><a href="http://profiles.google.com/jun66le" rel="nofollow noopener">http://profiles.google.com/jun66le</a></p>
<p><a href="https://freesound.org/people/TheAtomicBrain/sounds/351877/" rel="nofollow noopener">https://freesound.org/people/TheAtomicBrain/sounds/351877/</a></p>
<div class=""><a href="https://freesound.org/people/Fantozzi/sounds/166293/" rel="nofollow noopener">https://freesound.org/people/Fantozzi/sounds/166293/</a></div>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjIucG5n/original/nb%2BNvB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjMucG5n/original/k%2F7Wqk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjQucG5n/original/lLOtc%2B.png]]
<p><span></span></p>
<p><strong>You are a renown cartographer</strong> that has been tasked with creating a comprehensive map of the entire world. To do this you have divided the world into 36 quadrants and will label the most important Landmarks.</p>
<p>---------</p>
<p><em>Alone on a Map</em>&nbsp;solo tabletop role playing game about discovering landmarks and creating a map.</p>
<p>This game&nbsp;uses a standard deck of playing cards, 2 six-sided dice, writing implements, a grid, and an optional coin.&nbsp;&nbsp;</p>
<p>A grid is provided at the end of each PDF document, but there is also separate grid PNG available for download.</p>
<p>This game is a hack of&nbsp;<a href="https://noroadhome.itch.io/alone-among-the-stars">Alone Among the Stars</a> by <a href="https://noroadhome.itch.io">Takuma Okada</a> and is heavily inspired by <a href="https://dr-d-king.itch.io/tiny-islands">Tiny Islands</a> by <a href="https://dr-d-king.itch.io">David King</a></p>
<p><a href="https://ko-fi.com/kramstack" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ2NTkzNzEucG5n/original/GnxSt9.png" loading="lazy"></a></p><p>If you have made a map and would like to show me please @ me on Twitter my handle is <a href="https://twitter.com/KadenRamstack" rel="nofollow noopener">@KadenRamstack</a> and I would love to see it!&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMxNDMzLzQ2NTkzODYucG5n/original/DB35al.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxNDMzLzQ2NTkzODQucG5n/original/hByZ6m.png]]
<p><strong>As a criminal on death row you can choose... Die quietly or die in the Alpha Dog dungeon! Choosing the dungeon will still bring certain death, but it may also grant you immortality if you can become the Alpha Dog champion by defeating the hordes of Cur over multiple levels using all your wits and the many weapons scattered throughout.</strong></p>
<p></p>
<p><span></span></p>
<p><strong>FEATURES:</strong></p>
<p>Alpha dog is an ultra-low-rez arena shooter with procedurally generated levels. You start the game with a simple pistol, but as you continue you can buy or find more weapons and upgrade your health. The game has the following features:</p>
<ul><li>Infinite levels of procedurally generated mayhem</li><li>19 different weapons, all with their own unique handling and effects</li><li>Multiple different enemy types, each with their own distinct AI</li><li>Secret areas with special weapons that just can't be bought</li><li>Lots and lots of achievements! Can you get them all?</li><li>Online highscores so you can compete against the world</li></ul>
<p><br></p>
<p><strong>WHY SO SMALL?</strong></p>
<p>This game started from a simple premise - what's the smallest resolution that I can make a playable game in? After making some prototypes I realised that 90x45 was viable and set about making something that would be fun to play in such a small amount of pixels... and so Alpha Dog was born! I've always loved arena shooters, and the small play area lent itself nicely to this kind of casual shooter game. I've packed as much as possible into the tiny space available and I hope you enjoy playing it! Remember, it's not the size that counts, but what you do with it... ;)</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ChMhsjt9M6k" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4NzgucG5n/original/sS5jDZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4NzkucG5n/original/YSeMbY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODIuZ2lm/original/Ng3kgw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODEuZ2lm/original/Ivk%2B13.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODMuZ2lm/original/gdYLnE.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODUuZ2lm/original/q3aZp1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODQuZ2lm/original/oqngiD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODAucG5n/original/YLLHf0.png]]
<p class="text-center"><em><strong>When struggling writer Peter York becomes trapped on a remote farmstead in the eastern Free State, South Africa, he is forced to confront a dark history in his bid for freedom.</strong></em><br></p>
<p><em>Among the Innocent&nbsp;</em>is the first of five instalments in the&nbsp;<em>Stricken</em>&nbsp;series, each exploring a stage in the Kübler-Ross model for dealing with grief and loss. In this epic series, players will be challenged in a rich narrative experience that spans multiple decades and storylines. The&nbsp;<em>Stricken</em>&nbsp;series blends elements of classic point-and-click adventures with modern first-person games, and delivers a mature story for players who long for intrigue.</p>
<h2>Features</h2>
<ul><li>A blend of classic point-and-click gameplay and modern first-person exploration.</li><li>12 acres of farmland to explore, with unique, hand-crafted locations.</li><li>Multitude of puzzles to challenge your logic and intuition.</li><li>A rich, layered story to discover and experience first-hand.</li><li>Original soundtrack composed and performed by Zero Degrees Games.</li><li>Dark themes inspired by classic and modern horror and thriller films.</li><li>A handy <a href="http://www.stricken-game.com/among-the-innocent-hint-book/" target="_blank" rel="nofollow noopener">hint guide</a> in case you get stuck!</li><li>Free Deluxe Edition content - A digital prequel comic book and the full soundtrack, complete with 10 original pieces of music.</li></ul>
<h2>Reviews</h2>
<p><em>“Although there’s nothing too shriek-worthy, the game’s macabre narrative hooks you in through some ghoulish details and intriguing plot threads.”</em>
<strong>7.5/10 – Critical Hit</strong></p>
<p><em>“We highly recommend this for anyone who loves adventure, puzzle and Indie games in general.”</em>
<strong>7/10 – Game Nation SA</strong></p>
<p><em>“Among the Innocent is a great homage to the classic point-and-click genre, and a solid first outing for Zero Degrees Games.”</em>
<strong>79/100 – Gamecca Magazine</strong></p>
<h2>System Requirements</h2>
<ul>MINIMUM:<ul><li>OS:&nbsp;Windows 7&nbsp;or newer</li><li>Processor:&nbsp;Intel Core i3 / AMD A6</li><li>Memory:&nbsp;4 GB RAM</li><li>Graphics:&nbsp;NVIDIA GTX 460 / AMD 4870</li><li>DirectX:&nbsp;Version 11</li><li>Storage:&nbsp;4 GB available space</li></ul></ul>
<ul>RECOMMENDED:<ul><li>OS:&nbsp;Windows 7 or newer</li><li>Processor:&nbsp;Intel Core i5 / AMD FX</li><li>Memory:&nbsp;8 GB RAM</li><li>Graphics:&nbsp;NVIDIA GTX 680 / AMD 7970</li><li>DirectX:&nbsp;Version 11</li><li>Storage:&nbsp;4 GB available space</li></ul></ul>
<p><em></em><em>Note:&nbsp;Keyboard and mouse support only</em></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/yOcC_UlOpFI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTUuanBn/original/fXqWmy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTYuanBn/original/kj4akR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjAuanBn/original/WQ%2FsC7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTguanBn/original/sX%2FkE5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjEuanBn/original/ARBQi8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTkuanBn/original/vp5Jwf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjIuanBn/original/ymibn9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTcuanBn/original/%2B1godr.jpg]]
<p><strong>This edition of An Altogether Different River was funded on <a href="https://www.kickstarter.com/projects/ehronlime/an-altogether-different-river-zine-edition" rel="nofollow noopener">Kickstarter as a part of Zine Quest 3</a>.&nbsp;</strong></p>
<p><br></p>
<p><br></p>
<p>&nbsp;<em>It has been some time since you’ve left home, but now it’s finally time to return. To what, though? </em>
  </p>
<p><em>The home you held in your mind, and the home you will encounter will not be the same. You are not the same. </em>
  </p>
<p><em>You can’t step into the same river twice. You can’t go home again.<br></em></p>
<p><em></em><br></p>
<p><br></p>
<p>This is a GM-less roleplaying game meant for 2 to 4 players and&nbsp;a single session of about 3-4 hours. It&nbsp;is&nbsp;inspired&nbsp;in&nbsp;parts&nbsp;by&nbsp;<a href="http://lessthanthreegames.com/downfall.html" rel="nofollow noopener">Downfall, by Caroline Hobbs</a> and <a href="http://www.lamemage.com/microscope/" rel="nofollow noopener">Microscope, by Ben Robbins</a>. Cover and interior art is by <a href="https://linktr.ee/venessatgg" rel="nofollow noopener">Venessa Tang</a>. You will need pencils and paper and maybe a deck of cards to pick randomly from lists.<br></p>
<p>It is about a Town, the people who have left it and returned, and the people who stayed behind. <br></p>
<p>It is about returning home and grappling with what has and hasn't changed.</p>
<p><img src="https://img.itch.zone/aW1nLzU4NjI5NzUuanBn/original/HBClO8.jpg" loading="lazy"><br></p>
<p>At the start of the game, you will collaboratively build a Town out of several elements. You will draw two maps for the Town: one for the Town Then, and one for the Town Now.<br></p>
<p>You then create your characters and choose whether they left the Town and returned, or stayed throughout the period. You also highlight certain questions you want to explore through your characters and relationships. You will track this through a relationship map which you draw between the Towns.<br></p>
<p>Then you introduce and explore different aspects of the Town and play through different scenes to flesh out the Town and the characters, seeking to answer the different questions you have.</p>
<p><img src="https://img.itch.zone/aW1nLzU4NjI5NzgucG5n/original/m5ez%2FY.png" loading="lazy"><br></p>
<p>You can look to Town card prompts to add different aspects of the town, then highlight how the Town has changed by picking an aspect and showing its form in both the Town maps. Based on what you know of the Town and its history, you can pick questions to form the basis of scenes between various characters to explore the Town in more detail.</p>
<p>Once you've answered a few questions, you'll move to end the game, even if you have questions left unanswered, as time passes on for the inhabitants of the Town.<br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjcucG5n/original/E9bxo3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjgucG5n/original/leMdod.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NzAucG5n/original/sRsnLv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjkucG5n/original/h1vvFl.png]]
<iframe width="560" height="315" src="https://www.youtube.com/embed/MNZamFj1Pmk" frameborder="0" allowfullscreen=""></iframe>
<p>"An Oath in Kind" is a Kinetic Novel about a dethroned demon queen and the one and only knight who remained loyal after her fall.&nbsp;<br></p>
<p>When Claire finds her queen bleeding across the floor of a forest hollow, she swears to herself that she&nbsp;<em>will</em>&nbsp;fulfill her oath to see Galena to safety... even if Galena would have rather been left there in the mud.&nbsp;</p>
<h2> Features </h2>
<ul><li>A 10 chapter Gay Roadtrip Romance</li><li>Bed-Sharing</li><li>Wound-Tending</li><li>Dramatic Confessions</li><li>Clumsy Lesbianism</li><li>Fantastical setting</li><li>Tall Buff Orc Knight Lady</li><li>Chronicaly Flirtatious and Depressed Demon Queen</li><li>A Real Horse</li><li>Real Horse Sounds</li><li>And More!</li></ul>
<p>Character art by <a href="https://twitter.com/zeecoshow" target="_blank" rel="nofollow noopener">Zee Coshow</a>!</p>
<p>Game content warnings:&nbsp;So there's this one part where there's an arrow they have to remove from a wound and the sound effects for that are kind of intense.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MNZamFj1Pmk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNDkuanBn/original/Pj1dwm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTAuanBn/original/b0spNg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTEuanBn/original/VQZwpa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTUuanBn/original/vGRTmp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTYuanBn/original/zK7obs.jpg]]
<p>Be a frog mom!</p>
<p>Play with your frogs in the nest mode. Name them, give them outfits, and let them play with the toys they found!<br></p>
<p>Protect your frogs in The Maze! With 1 or 2 players on keyboard, or a bunch of players on gamepad, smack away the wasps while your frogs eat flies. Don't let the wasps get to them!</p>
<p>- graphic design, game design,&nbsp;and code by Celeste "SodaPOP" Plank</p>
<p>- music by Grant Binkley and Carlos Najera<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/egJ-H5FgGug" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjQucG5n/original/a%2BUZZS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NTkucG5n/original/vAlPgo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjYucG5n/original/AvP7ev.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjcucG5n/original/6ZuM28.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjEucG5n/original/fixu%2Bg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjAucG5n/original/37LNHw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjUucG5n/original/t8hqpe.png]]
<h3>What is&nbsp;<em>Anamnesis</em>?</h3>
<p><strong><em>Anamnesis</em></strong>&nbsp;is a solo journaling RPG about self-discovery, reflection, and identity.&nbsp;You play as an individual who has woken up with<strong> memory loss</strong>. You do not remember who you are, where you are, or what you care about.&nbsp;As you draw <strong>tarot cards</strong>, you fill the blank spaces of your <strong>past</strong> and learn more about your <strong>present</strong>.<br></p>
<p>Inspirations include&nbsp;<em><a href="https://loottheroom.itch.io/wretched" target="_blank">The Wretched</a></em> by Chris Bissette and&nbsp;<em><a href="https://presspotgames.itch.io/the-portal-at-hill-house" target="_blank">The Portal at Hill House</a></em> by Travis Hill and Lindi Farris-Hill.</p>
<p>All that is needed to play is a <strong>deck of tarot cards</strong> and a <strong>journaling method</strong>. The game is 10 pages long.</p>
<p><strong>This is the beta version of the game.</strong>&nbsp;The text is complete, but due to successful crowdfunding there will be a new version with edits, original art, and a new layout.&nbsp;<strong>Everyone who purchases the beta version will receive the updated version for free</strong>.</p><p><br></p>
<p><a href="https://open.spotify.com/playlist/1f0l9l3wyBpTWnwnSpEy2a?si=riOPD8ycSAmovJ6oohRhSw" target="_blank" rel="nofollow noopener">Click here for a Spotify playlist of background music for&nbsp;Anamnesis.</a></p>
<p><br></p>
<p>If you'd like to learn more about Anamnesis and watch a demo of the game, check out my interview with&nbsp;Garm at <a href="https://www.youtube.com/channel/UCJuq7Klg3_dbBKThC6KcbDw" target="_blank" rel="nofollow noopener">Midgardia RPG</a>:</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/biyN2N0Ym2E" frameborder="0" allowfullscreen=""></iframe></div>
<h4></h4>
<p>This game was successfully Itchfunded.&nbsp;<a href="https://itchfunding.games/#" target="_blank" rel="nofollow noopener">You can find a list of other Itchfunding projects here.</a> This list was put together by&nbsp;<a href="https://twitter.com/Keganexe" target="_blank" rel="nofollow noopener">@Keganexe</a>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/biyN2N0Ym2E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjQuanBn/original/K3CqZG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjYuanBn/original/Olca0Z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjguanBn/original/7SQLot.jpg]]
<p>You've role-played as&nbsp;a cyberpunk, a steampunk, or a dungeonpunk, but have you played-</p>
<h3>An Actual Punk?</h3>
<p><em>Anarchopunk 2020</em> tells the story of our dark present. You're a musically-minded anarchist in a band, working&nbsp;to sabotage the abusive systems that infest our societies. You'll need to engage in direct action, concerts, and break the law to break the cycle of oppression, all to the tune of the purest 1990s edginess I&nbsp;could muster. Will you break the chains holding us all back, or will you fall, crushed by a merciless authority?</p>
<h3>Fuck that!</h3>
<p><em>Anarchopunk 2020 </em>features a innovative&nbsp;system where anarchists don't obey the rules—rules are inflicted on them by the system! Your punk's&nbsp;mechanics are defined <em>in-game</em>, as&nbsp;the system tries to label you, and by rejecting or accepting those labels, you define your own identity!&nbsp;But be careful—if you let the system define you, it'll own you!</p>
<p>But you've got an edge, you're powered by punk! Play your favorite songs to gain an edge over the system during the game, and play out your music video rebellion!</p>
<h3>Too soon?! Hell no! Not soon enough!</h3>
<p>Generate heat as you struggle against the system, then turn your disobedience into protest and revolt!&nbsp;Pregenerated cards in PDF or PNG&nbsp;provide easy reference for game mechanics, and deck files and guidelines are included for use to with <a href="https://store.steampowered.com/app/286160/Tabletop_Simulator/" rel="nofollow noopener">Tabletop&nbsp;Simulator</a> for safe social distancing. And it's cross-compatible with <em><a href="https://arbco.itch.io/skatepunk">Skatepunk:&nbsp;OPUSR</a></em> if you want to ride the revolution!</p>
<p>Pay what you want (or nab it for free)&nbsp;and share it with your friends!&nbsp;Share it with your enemies! E-mail it to strangers!&nbsp;<em>Anarchopunk 2020</em> is licensed to you as&nbsp;Creative Commons (<a href="https://creativecommons.org/licenses/by-nd/3.0/legalcode" rel="nofollow noopener">CC-BY ND</a>)!</p>
<p>What are you waiting for? <strong>Rise the fuck up, and do it loud!</strong></p>
<h3>Features:</h3>
<ul><li>9 systems and 9 different chains of oppression to break!</li><li>27 labels to throw on some punks!</li><li>Infinite punks, infinite songs, and infinite revolutions!</li></ul>
<p><strong>25 pages | 36 cards | PDF, PNG, and Tabletop Sim files included!</strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTQucG5n/original/19ajr%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTMucG5n/original/Cfit6l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNTQucG5n/original/MOv%2BRj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNjAucG5n/original/U5WNXg.png]]
<p>Pursued through the ruined streets of Los Angeles, harried by a roving Kill Gang, perhaps it was simple survival instinct that drove you to seek shelter. But perhaps it was Fate which drove you to seek shelter in the offices of Wayfarer Inc. In their subterranean laboratories, you discover a machine which opens up a portal to another world. Wayfarer had just had enough time to send one expedition thought the gate before they had evacuated.<br><br>Seeking escape from the Kill Gang beating down the doors, you activate the device, open the portal, and step through...<br><br>You are greeted by a lush and dangerous world of verdant forest and acid lakes, rocky crags and networks of caves. Up on a high plateau, you see a geodesic dome shimmering under a pink sky. Perhaps if you can reach it, you may find the first expedition... or at least find out what became of them.<br><br><strong>And All Would Cry Beware</strong>&nbsp;is a old-school-style fast-paced FPS with a Metroidvania structure. Explore a connected world, discover what became of the Lost Expedition. Find new guns which will allow you to reach new areas. Weave through enemy projectiles and take on fearsome bosses.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/PPgQSq6i6p4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTQuanBn/original/%2Bg3Jxd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTAuanBn/original/xGS8Ns.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTIuanBn/original/sFB%2BmL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTEuanBn/original/D3hYM%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NDguanBn/original/5t6x5T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NDkuanBn/original/Cl9Tw0.jpg]]

<<list-links "[tag[Android]sort[title]]">>

<p><strong>Downloading this game from the bundle? Follow me to stay up to date on my latest adventure games!</strong> (Like the award-nominated sequel, <a href="https://sean-han-tani.itch.io/anodyne-2">Anodyne 2!</a>)<br></p>
<p><em>Explore the wondrous dream world of the human Young.
</em></p><em>
</em><p><em>Anodyne is a unique Zelda-like game, influenced by games such as Yume Nikki and Link's Awakening. In Anodyne, you'll visit areas urban, natural, and bizarre, fighting your way through dungeons and areas in Young's subconscious.</em></p>
<ul><li>Join our <a href="https://www.anodynegame.com" rel="nofollow noopener">mailing list</a> for future game updates! </li><li>Join our <a href="http://discord.gg/analgesic" rel="nofollow noopener">Discord community</a>!</li><li>Buy the sequel, Anodyne 2: Return to Dust on <a href="https://store.steampowered.com/app/877810/Anodyne_2_Return_to_Dust/" rel="nofollow noopener">Steam</a> !&nbsp; or get it on <a href="https://han-tani.itch.io/anodyne-2">itch</a>.</li><li>Follow the creators on Twitter, <a href="https://twitter.com/han_tani" rel="nofollow noopener">Melos</a> and <a href="https://twitter.com/even_kei" rel="nofollow noopener">Marina</a>!</li></ul>
<p>Originally released in 2013 by Marina Kittaka and Melos Han-Tani.&nbsp; Buy the OST at <a href="https://htch.bandcamp.com/album/anodyne" rel="nofollow noopener">Melos's bandcamp.</a> <br></p>
<p>Check out our 2016 platformer adventure game, <a href="https://han-tani.itch.io/even-the-ocean">Even the Ocean</a>!<br></p>
<p>-Anodyne features Simplified Chinese, Japanese, Korean, Brazilian-Portugese and Spanish language options<em>. <br></em></p>
<p><strong>Reception</strong></p>
<p><em>"Scenic water stretches and skyward spangles decorate idyllic countryside villages and moody, rain-drizzled night scenes. This is another one of those games I've flicked through the screenshots as if it were a global travel book outlining places you should visit before you die." - Chris Priestman, Indie Statik</em></p>
<p><em>"The game's sound design is the strongest facilitator of Anodyne's sense of dread and unease; the ambience and music give off an air of suspicion and danger, with ugly chords and disquieting, unnatural-sounding synthetic pings. It all adds up to a game where you're not sure who to trust, and you can't be sure of what's real." - Sam Prell, Penny Arcade Report</em><em><br></em><br></p>
<p><strong>Please Note</strong></p>
<ul><li>The Mac version has flickering on fullscreen on some version of Mac OSX. Please play in windowed mode.</li><li>Linux: Anodyne does not have an official Linux version, buy at your own risk - This is unsupported, a very old (but complete) version from 2013 or so. I cannot help you with any bugs for this version. You can try to get the executable working, or you can play the standalone SWF.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OjWRU5toicQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMTQwLmdpZg==/original/gsLLCI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMTQyLmdpZg==/original/DXIeJD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDI0LnBuZw==/original/y1WkpD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDIzLnBuZw==/original/9RYtxM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDI1LnBuZw==/original/ovbzq%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDIyLnBuZw==/original/Lrol9z.png]]
<p>Anomaly is a Tarot based gmless storytelling game about a sinister organization investigating a supernatural anomaly.&nbsp;&nbsp;</p>
<p>Anomaly works best with 2-5 players, and games take between two and four hours.<br></p>
<p>Players define the nature of the organization, the team of researchers they have sent, the anomaly, and the setting it's found itself in, then develop the story of the investigation by drawing Tarot cards and answering associated questions. &nbsp; </p>
<p><br></p>
<p>Mechanics inspired by The Quiet Year by Avery Alder.</p>
<p><br></p>
<p>Genre Touchstones are Magnus Archives, SCP foundation, Warehouse 13,&nbsp; and the Concern from Friends at the Table.</p>
<p>Current build is version 12.<br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzIyODgzMDgucG5n/original/mrVViQ.png]]
<p>Now available on Steam! Every itch.io purchase comes with a Steam key.<br><br>An indie platform game about keys, running, jumping, doors and nonsense.</p>
<p>Another Perspective follows the adventure of someone who is looking for something that they can't remember. Then they work out they can warp themselves into other bodies and things get a bit confusing.</p>
<p>Check out the official launch page and trailers!</p>
<p><a href="http://shaunspalding.co.uk/AnotherPerspective/" rel="nofollow noopener">http://shaunspalding.co.uk/AnotherPerspective/</a> </p>
<p>Any technical issues with the game please do contact me at shaun.spalding@gmail.com and I will do my best to help out. I recommend if you don't have a fairly modern machine to run the game <em>without</em> lighting enabled. It's a big performance killer and the game should still look great without it!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/nj99ww7nMZA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzEucG5n/original/S6omr0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzIucG5n/original/mMyNBP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzcucG5n/original/4Ey1lY.png]]
<p>Um zodíaco extraordinário atravessa o firmamento da Vila Itororó.
  </p>
<p>Em 2011, após anos de disputa, o governo de São Paulo removeu as últimas famílias do lugar. A Vila havia sido expropriada para se tornar um <a href="http://vilaitororo.org.br/" target="_blank" rel="nofollow noopener">centro cultural</a>. Ficaram as estátuas de cimento e as construções de arquitetura exótica, vazias de gente, na condição de <a href="https://pt.wikipedia.org/wiki/Vila_Itoror%C3%B3" target="_blank" rel="nofollow noopener">patrimônio tombado</a>.
  </p>
<p>Mas ainda paira sobre a Vila uma impressão de eventos que não cabem nesse acervo. Os objetos de memória dos antigos moradores contam outras histórias. <em>Antigas Constelações</em> evoca esse universo a partir de depoimentos e <a href="https://sketchfab.com/menotti/collections/vila-itororo" target="_blank" rel="nofollow noopener">réplicas digitais</a>, reanimados numa experiência de realidade virtual pelos céus acima da instituição. <br></p>
<p class="text-center">===</p>
<p>Este documentário executável faz parte de uma pesquisa sobre interfaces críticas com nosso patrimônio material. Aqui, está em questão o papel dos processos de mediação tecnológica na produção de monumentos e na institucionalização do realismo histórico.</p>
<p>Um projeto de Gabriel Menotti iniciado durante a <a href="https://www.goethe.de/ins/br/pt/kul/sup/gnv/gnv2017/arqueologia-viva.html" target="_blank" rel="nofollow noopener">residência Goethe na Vila </a>. Produção: Goethe Institute e Ventania. Assistência de Produção: Francesca Tedeschi. Depoimentos: Maria Aparecida (bonequinho), Camila (vestido), Iara (mesinha), Alessandro (pica-pau), Michael (snoopy), Valeska (mônica), Kauã (sapato), Elaine (vasinho) e Isamar (quadro). Trilha: <a href="http://dig.ccmixter.org/files/doxent/48369" target="_blank" rel="nofollow noopener">Blue Medication (Ft: Javolenus, Martijn de Boer)</a> (cc-by-nc 3.0) Doxent Zsigmond. Usa os pacotes <a href="https://github.com/keijiro/Pcx" target="_blank" rel="nofollow noopener">Pcx</a> e <a href="https://github.com/keijiro/Reaktion" target="_blank" rel="nofollow noopener">Reaktion</a> de Keijiro Takahashi. Agradecimentos: Instituto Pedra, Concrejato, Fablab da Vila e Graziela Kunsch.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDA4MTYucG5n/original/f8mqw7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDEzNzAucG5n/original/TNAKCd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDA4MTUucG5n/original/CTZch2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDEzNzMucG5n/original/7t1W3b.png]]
<p><strong class=""></strong><strong>Antistatic</strong>&nbsp;is a crisp, uncompromising indie platform fighter, built from the ground up in a custom engine. While simple for beginners, bluehexagon's design philosophy emphasizes depth and variety of play at all levels. Engage in local or online multiplayer matches as teams or as rivals.</p>
<p>Inside a crumbling digital world, atomic combatants carry out their programming in an endless series of battles over the remaining shielded landmarks.</p>
<p><strong>Online play</strong>&nbsp;— join one other player in online matches; online is still early in development, with much more in the works<br><strong>Familiar mechanics</strong>&nbsp;— shields, directional influence, lag-canceling, grabs, wavedashing, and more<br><strong>Full GameCube controller support</strong>&nbsp;— play with the iconic platform fighter controller using the official adapter<br><strong>6 characters</strong>&nbsp;— all with different play styles, and more coming over Early Access<br><strong>10 stage layouts</strong>&nbsp;— some staples, and some new<br></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/GtGyPGYhTdE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NjcuZ2lm/original/g2caPV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NjMuZ2lm/original/oKr9X9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NzguZ2lm/original/vqK2%2BQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1OTcuZ2lm/original/YsKeA2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzM1NzU3MTEucG5n/original/wHhJ2j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MTguanBn/original/v4S8Fe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MTkuanBn/original/j3lgSg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MjAuanBn/original/DifqNb.jpg]]

<p><img src="https://img.itch.zone/aW1nLzE0NTAxMTcucG5n/original/V0S%2Fns.png" loading="lazy"></p>
<p>
	<strong>Apple Quest Monsters DX!
	</strong>
</p>
<p>
	Over 100 pages containing 85 lovingly crafted sprites and descriptions of monsters, a map, photos and more; all from a non existant RPG, inspired by my childhood love of reading strategy guides for games I never played.
<a href="http://splendidland.tumblr.com/post/158825550984/splendidlands-guide-to-ghosts-row-1-ghoul" rel="nofollow noopener">
	</a>
</p>
<p> I spent a lot of time on each monster, so I hope you enjoy reading them!</p>
<p><a href="https://splendidland.bigcartel.com/product/apple-quest-monsters-dx" target="_blank" rel="nofollow noopener">You can also buy this book in physical printed form! It would look lovely on your bookshelf (currently out of stock, sorry)!</a></p>
<p><a href="https://twitter.com/splendidland" rel="nofollow noopener">[Twitter]</a><a href="https://www.patreon.com/splendidland" rel="nofollow noopener">[Patreon]</a></p>
<p><img src="https://img.itch.zone/aW1nLzE0NTAxMTgucG5n/original/PBi3IF.png" loading="lazy"></p>
<p>This is an enhanced version of <a href="https://splendidland.itch.io/apple-quest-monsters">Apple Quest Monsters</a>, containing all the content from the physical DX release! 30 new monsters coming from the Desert, Tundra and the Moon, A small town full of NPCs, and a few photos of the monsters in the real world!<br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxODgucG5n/original/P0Alv8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxODcucG5n/original/CSHJWc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTQucG5n/original/X0WeUI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTcucG5n/original/M4jBEm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTkucG5n/original/wruOPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTA0NTUucG5n/original/yFL0Pk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNjIucG5n/original/zwqpdr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNjEucG5n/original/7RADAj.png]]

<p>*PC port now available!<br><br>Arcus is a fantasy action game where failure is just the next step in the story. Aim and fire arrows at invading enemies. Swing your sword&nbsp;at any angle to get past their defenses. Spend resources between missions to buy special arrow types and increase your chances of success&nbsp;while you solve&nbsp;the mystery behind the new undead skeleton faction in a land where magic has been made taboo.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-FNC4rrg7ng" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNjkucG5n/original/MfP8mm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzk0MzkucG5n/original/Xvz%2BIL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzAucG5n/original/TVS4O0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzOTExODcucG5n/original/as%2BkrY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzgucG5n/original/jLiugL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzcucG5n/original/EugP%2BE.png]]
<p>WELCOME TO<br></p>
<p>🌈✏️🎨𝙰𝚁𝚃 𝚂𝚀𝙾𝙾𝙻🎨✏️✨<br></p>
<p>U r a froshmin at 🅐 🅡 🅣 🅢 🅠 🅞 🅞 🅛.&nbsp;<br>Ur assignments are generated &amp; graded by an A.I.&nbsp;</p>
<p>Can a video game make you more creative?&nbsp;<br>Can a video game make you a better artist?&nbsp;<br>Can you graduate from Art Sqool? Idk,,, that's on u!</p>
<p><em>It makes the idea of practicing making art seem both inviting and worthwhile but still an incredibly weird undertaking.</em><br>-Kotaku</p>
<p><em>The color choices are characteristically Glander: candy-like pinks and blues, everything effervescently joyful. Eagle-eyed art-nuts will love spotting references to the likes of Ed Ruscha and Yayoi Kusama, though we won’t give too many of those away.</em><br>-AIGA Eye on Design</p>
<p><em>Art Sqool will soon make all non-virtual art colleges redundant.<br></em>-Rock Paper Shotgun</p>
<p><strong>Features:<br></strong>🖼Explore the sprawling Art Sqool campus in 3D&nbsp;<br>🖌Find and collect cool brushes to help you in your artistic process like the wiggle brush, rainbow pencil and mop.<br>🎨Use your drawing pad to complete your assignments and progress through the game.&nbsp;<br>👁An A.I. art professor grades your work and hands out assignments<br>☁️Over 200 inspiring prompts to help u break thru any creative block.&nbsp;<br>⌚️4-6 hours of gameplay<br>✨Creative fulfillment basically guaranteed<br>🎧Soundtrack is a banger&nbsp;</p>
<p>A new project from&nbsp;<a href="http://glander.co/" target="_blank" rel="nofollow noopener">Julian Glander</a><br>Coming to Mac &amp; PC February 5th, 2k19&nbsp;<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE1MDM0NjIuanBn/original/%2BW0JFr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjEuZ2lm/original/sfwLFv.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MTkuZ2lm/original/OmaTo%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjUuZ2lm/original/qj%2F8as.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjQuZ2lm/original/TN14HI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjAuZ2lm/original/KsHn8x.gif]]
<p><strong>Astronomia</strong>&nbsp;is a spatial 3D puzzle game with a minimalist classic arcade art style.</p>
<ul><li>Guide the ball around each level to clear every&nbsp;<strong>fragment block</strong>&nbsp;and unlock the&nbsp;<strong>goal</strong>.</li><li>Bonk, sling, and warp your way around&nbsp;<strong>25 levels</strong>.</li><li>Missteps are easily undone with the ability to&nbsp;<strong>undo</strong>&nbsp;any number of your previous moves, or simply&nbsp;<strong>restart</strong>&nbsp;the level from the beginning.</li></ul>
<p>A fun brain-teaser for casual and hardcore puzzlers alike!</p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/1346630/extras/steam_divider.gif?t=1592910966" style="border: 5px solid #a2009e" loading="lazy"></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hVPeeKFrV7c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzYucG5n/original/ZClS6M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyODAucG5n/original/XTP%2FtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzgucG5n/original/dpm5pp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyODEucG5n/original/Lmx3S%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzcucG5n/original/lcPeuH.png]]

<p class="text-center"><em>one for sorrow,&nbsp;<br>two for mirth,</em><em><br>three for a funeral,<br>four for a birth...</em></p>
<p>you're well familiar with the saying. a nursery rhyme, a schoolyard chant.&nbsp;<em>count the birds</em>, the children tell each other. <em>they will be able to tell your future</em>.</p>
<p>it’s more complicated than that, of course. it’s not just the number of birds, but also their demeanor, their flight, their nests, their song. any number of elements must be considered.</p>
<p>at its core, however, the nursery rhyme holds truth – the birds do know many things.</p>
<p>consult the deck, traveler. let the birds help you divine your future.</p>
<p class="text-center">&nbsp;&nbsp;🕊<br></p>
<p><strong>augur</strong> is an open-ended oracle deck for one or more readers. in augur, participants interpret a flock of strange and wonderful birds (represented by a unique deck of cards) to tell a story, foresee an outcome, or play to find out what happens.</p>
<ul><li><strong>24 cards</strong>, each with its own distinct symbolism and intention</li><li><strong>3 unique suits</strong> that lend additional meaning to each card in the deck</li><li><strong>poetic, philosophical meditation</strong> on memory, circumstance, and future action</li><li><strong>8-10 minutes</strong> per solo read, or more with additional interpreters</li></ul>
<p>the <strong>demo</strong> (free to download) contains a .txt file of&nbsp;the basic instructions and a pdf containing&nbsp;6 of the 24 cards.</p>
<p>the <strong>base game</strong> (available to those who purchase at $2 and above) contains the instructions and the full 24-card deck in two versions: a print-and-play version, and individual files.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTQ5NjQucG5n/original/zm8tfn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTU0MjAucG5n/original/PUvdUx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTQ5NjUucG5n/original/JnEJmJ.png]]
<$list filter="[is[current]has:field[average_session]]">
''Average Session'': {{!!average_session}}&nbsp;&nbsp;&nbsp;
</$list>
<p>Aye Aye Captain is a game about crewing a ship on the high seas of the 1500 and 1600s. You'll have to manage a crew, provide them with consistent booty, rum, and fight off mutinies all while pillaging vessels of royal navies, other pirates, and trading companies.&nbsp;</p>
<p>7/17/2020 Version 1.0 is here! If you buy it on Itch.io you'll also receive a Steam Key!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qsp6i0zmisk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTEuanBn/original/nFM40v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTAuanBn/original/LRc3JQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTMuanBn/original/jB%2FUkA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTIuanBn/original/IiO0fo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMDkuanBn/original/Z2CYrR.jpg]]
<p>They say that people go there when they're ready to die. They say Death himself is a patron. That's where the tavern gets its name. Azrael's Stop. Watering hole for the Angel of Death.<br></p><p>
	But that's just rumour. Ceph doesn't trade in rumour. He just serves drinks. Except, of course, that every couple of weeks, someone dies at Azrael's Stop.
</p><p>
	Azrael's Stop is an experimental fiction and music project, about life, death, and friendship. It is the story of a mystical tavern and how the people who go there develop over the course of a year: Ceph, the seventeen-year-old bartender who has seen all his loved ones die; Tom, the depressed old man, whom death will not take; Rye, who visits every day, though he died a year ago; Nael, the blind minstrel who saw war too young; Lona, the mysterious hunter of the dead; Trin, the girl who refuses to deal with her past; and the crow who watches over it all, cawing only when someone dies in Azrael's Stop.
</p><p>
	Azrael's Stop is part of a larger storytelling project by Silverstring Media, Inc., and is best enjoyed accompanied by the Azrael's Stop Official Soundtrack, which includes music referenced in this story. To learn more, go to <u><a href="http://azraelsstop.com" rel="nofollow noopener">http://azraelsstop.com</a></u></p><p>The ebook comes in .pdf, .epub, and .mobi formats.</p><p><strong>Purchase it for at least $9.99 and get the Azrael's Stop Official Soundtrack as well!</strong></p><p><strong>Or, complete your experience with Tales of the Stop, the sequel anthology of ten brand-new stories about Azrael's Stop, by paying $13.99!</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lHYZ9nXk6fs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODA5LmpwZw==/original/8AlMdE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODEwLmpwZw==/original/iQwYxd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODExLnBuZw==/original/qyqwvr.png]]
<p><em>Close your eyes. When you open them, you find yourself lying in the dust in a vast deserted hall, clutching a journal which is empty, except for a title written on the cover- “Notes on The Unified Language from The Tower of Babel”.</em></p>
<p>Babel is a Wretched and Alone Journaling game based on Bruegel's painting of the Tower of Babel<em><strong> </strong></em>that uses a journal and recording device, block tower, deck of cards, letter tiles and a die to tell your story of self-discovery from within this legendary edifice. <br></p>
<p>Babel was originally conceived as part of <a href="https://laurieoconnel.itch.io/" target="_blank">Laurie O'Connel's</a> <a href="https://twitter.com/hashtag/PaintingsJam" target="_blank" rel="nofollow noopener">Painting Jam</a> <br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzYuanBn/original/340SKq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzguanBn/original/H5I0fk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzkuanBn/original/oR5QGs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzQ5MzQ3MDIuanBn/original/MIn%2FKO.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQ1NTk2MTcucG5n/original/wH1KKm.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ1Njg4MDEucG5n/original/thEgKZ.png" loading="lazy"><br></p>
<p>An absurd workplace tragedy.</p>
<p>You hire a baby. What can go wrong?</p>
<p>Developed for my <a href="https://awaywardwriter.itch.io/absurd-games">thesis on absurd games.</a></p>
<p>Takes roughly 10 minutes to play.</p>
<p>Baby made in&nbsp;<a href="http://www.makehumancommunity.org/" rel="nofollow noopener">http://www.makehumancommunity.org/</a></p>
<p>Music by Kevin Macleod</p>
<p>Chicago Skyline photo by&nbsp;Petr Kratochvil</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1NzgucG5n/original/WWSB%2FK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODIucG5n/original/gqcWO2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODMucG5n/original/jxlhYf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODQucG5n/original/7LDUC9.png]]
<p>Backspace Bouken is a Japanese-inspired old-school dungeon crawler with a fast-paced typing battle system and ridiculous storyline. Fight monsters by typing their dialogue as you progress through the game and climb the tower. Fast and accurate typing will be rewarded, and maybe you'll even become a better typer!<br></p>
<p><a href="https://rngpartygames.itch.io/backspace-bouken-demo">DEMO PAGE</a>&nbsp;|&nbsp;<a href="https://store.steampowered.com/app/1097170/Backspace_Bouken/" rel="nofollow noopener">STEAM PAGE</a>&nbsp;</p>
<h4><a href="https://rngpartygames.bandcamp.com/album/backspace-bouken-original-soundtrack" rel="nofollow noopener">SOUNDTRACK&nbsp;DOWNLOAD</a></h4>
<h4>Features</h4>
<ul><li>Fluid typing-based battle system that tells the story as you play.</li><li>Fight a wide variety of enemies and bosses with unique and compelling behaviors and twists.</li><li>Explore numerous floors of a tower in classic first-person dungeon crawling style.</li><li>Solve puzzles and collect passwords and information from your enemies to progress through the game.</li><li>Save NPCs from the tower in a collectathon fashion.</li><li>Get rewards for completing encounters and filling out your map.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vvQ3-nS1_14" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzguanBn/original/NJ4Z%2Bq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDAuanBn/original/1d0Nei.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDIuanBn/original/Cz3HIi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzcuanBn/original/%2FRltFm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDEuanBn/original/i%2BBPEy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzkuanBn/original/dXM60Q.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDMuanBn/original/evv6Mn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzQ4NTEyODguanBn/original/w28A7s.jpg]]
<p>This is my first ever game so there may be some bugs but the game should be playable.</p>
<p>A simple block breaker game in the vein of Breakout or Arkanoid.</p>
<p><br></p>
<p>(Note: the debug version is mainly for testing purposes and contains a level skip and autoplay&nbsp;but was included for anyone who wants some cheats)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI5MDcwLzU5MTU3MDkucG5n/original/Umi%2FT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI5MDcwLzU5Mzc3NTYucG5n/original/1Ye2QK.png]]
<p>Heroes are attacking the Bandit hideout and put a end of their sacking of nearby villages. Set of paper miniatures for tabletop games and rpg, great for early adventures, when heroes are tasked to face rogues and thieves. This set include 11 Paper miniatures:</p>
<p>4 Bandits with 2 color variations:</p>
<p>Bandit Rogue</p>
<p>Bandit Rangers</p>
<p>Bandit Leader</p>
<p>Bandit Barbarian</p>
<p>3 Heroes:</p>
<p>Human&nbsp;Fighter Captain</p>
<p>Hal-Elf Wizard<br></p>
<p>Dwarf Ranger</p>
<p>Any feedback, suggestions and issues feel free to leave a comment.</p>
<p>Thanks! =)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTQuanBn/original/jJ%2FBUp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTIuanBn/original/UVXIuS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTMuanBn/original/D2V2af.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTEuanBn/original/esBu%2F7.jpg]]
<p>Twenty-five games, thirty years, over eighty ports—whatever the number, there've been a heck of a lot of games based on<em> The&nbsp;</em><em>Simpsons</em>. The story of the animated sitcom that tried to make it in video games is a long and sordid tale, now collected here in the unauthorized retrospective&nbsp;for your reading pleasure.</p>
<p>Originally written in 2019-2020, <em>Bart vs. My Hopes &amp; Dreams</em> is the culmination of nearly two decades of fan obsession by a man who wouldn't let <em>Simpsons</em> video games fumble gently into that good night.&nbsp;With detailed critiques from a longtime writer and game industry veteran, as well as collected insights from the original creators, this is the most complete look at every <em>Simpsons</em> video game ever made.</p>
<p>An early version of the book&nbsp;was previously available online, but this ebook edition is the definitive story with numerous revisions and improvements. I cannot quantify the amount of time, research, and hardware that went into writing&nbsp;this book, but I hope the pay-what-you-want price feels fair. Thank you for your support!</p>
<p><strong>Ebook details:</strong></p>
<ul><li>Coverage of 25 <em>Simpsons</em> video games from 1990 to 2012</li><li>EPUB, MOBI, and&nbsp;PDF<br>
</li><li>389 pages (PDF)</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDIyMDYucG5n/original/aUzhga.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDI0MTgucG5n/original/grsb%2Fq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDIzMzEucG5n/original/fw%2F2Hp.png]]

<p><strong>BasketBelle</strong> is an experimental 2D basketball-based platformer. Each Chapter of the game uses the mechanics and idea of basketball in a different way. At one point you might be dribbling inside the intestines of a purple blob creature. At others, you're likely to be dunking above the clouds in front of the Parisian moon.&nbsp;<br><br>A dynamic soundtrack and unique cardboard visuals help tell the story of a sister who must be saved through the power of basketball.</p>
<ul><li>Dunk, dribble, and crossover through 8 Chapters spanning throughout the impromptu courts of Paris&nbsp;</li><li>Each Chapter takes the mechanics of basketball and applies them in different ways. Some chapters are more action, some are more puzzle. And then there are the strange chapters.</li><li>Music is tied directly to the gameplay, though it's all passively controlled. For example, every time you dribble, you hear a bass hit. Shoot the ball, and the percussion stops.&nbsp;</li><li>Visuals in the game are a unique mix of cardboard and color, every scene popping off the screen.</li><li>Included with the game! :D<ul><li>The BasketBelle EP: Full Soundtrack + Bonus Tracks (MP3) + Cover Art&nbsp;</li><li>BasketBelle sketchbook: Full-color PDF including sketches and liner notes</li><li>Browser version of&nbsp;BasketBelle&nbsp;(playable on Mac and Linux as well)</li><li>Access to&nbsp;Making Of Featurette! (11 min hosted video)</li></ul></li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0_iGRUaYFLM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTEucG5n/original/xkBhjK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTIucG5n/original/v8HdJc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTMucG5n/original/hu3j2M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTQucG5n/original/ht0jbz.png]]
<p><em>Bat Lizard Bonanza</em> is an arcade shoot-em-up (or shmup)&nbsp;for the NES. It's inspired by games like <em>Gradius&nbsp;</em>and&nbsp;<em>Parodius</em>.</p>
<p>The settlers have been exploiting Irata’s&nbsp;natural resources for many solar cycles.&nbsp;The Wampus took back the mountains.&nbsp;The Wart Worms took back the mines.&nbsp;But now Lizzy the Bat Lizard&nbsp;must embark on a quest to end the&nbsp;Settler scourge once and for all,&nbsp;dauntless in the wind with the echoes of her ancestors at her back.</p>
<p><em>Bat Lizard Bonanza</em>&nbsp;features a rocking soundtrack, seven levels, and over 14&nbsp;boss fights.</p>
<p><em>* * *</em></p>
<p><strong>Bat Lizard Bonanza&nbsp;</strong>is the&nbsp;<strong>third&nbsp;</strong>game in&nbsp;the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1.&nbsp;<a href="https://johnvanderhoef.itch.io/wampus" target="_blank">Wampus</a></p>
<p>2.&nbsp;<a href="https://johnvanderhoef.itch.io/wart-worm-wingding" target="_blank">Wart Worm Wingding</a></p>
<p>3.&nbsp;Bat Lizard Bonanza</p>
<p>4.&nbsp;<a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a>.</p>
<p><a href="https://johnvanderhoef.itch.io/leggite-luta-livre-demo" target="_blank"></a></p>
<p>***<br></p>
<p>Controls</p>
<p>Directional Pad -- move in 8 directions</p>
<p>B -- standard projectile, the bat echo</p>
<p>A -- bat bomb (once upgraded via pickup)</p>
<p>Hold B and press A -- bat bomb 2 (once upgraded via pickup)</p>
<p>Once weapons have been fully upgraded, all subsequent weapon upgrade pickups become screen-clearing triggers -- BOOM!</p>
<p>***</p>
<p>FOR THE BEST EXPERIENCE:&nbsp;I&nbsp;recommend getting an original NES&nbsp;controller and a USB adapter for it. You can find one&nbsp;<a href="https://www.retrousb.com/product_info.php?cPath=21&amp;products_id=158" rel="nofollow noopener">here</a>&nbsp;or&nbsp;<a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&amp;qid=1549047471&amp;sr=8-3&amp;keywords=NES+controller+usb+adapter" rel="nofollow noopener">here</a>. You can also use any gamepad for a similar experience.</p>
<p>***</p>
<p>Bat Lizard Bonanza was made possible thanks to&nbsp;<a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener">NESMaker</a>, an engine developed to make NES development accessible.</p>
<p>In order to play Bat Lizard Bonanza, you'll need an NES emulator. I recommend&nbsp;<a href="http://www.fceux.com/web/home.html" rel="nofollow noopener">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games.&nbsp;</p>
<p>Once you have FCEUX downloaded, start it up and&nbsp;open the Bat_Lizard_Bonanza.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong>&nbsp;Download&nbsp;<a href="https://openemu.org/" target="_blank" rel="nofollow noopener">OpenEMU</a>&nbsp;for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core."&nbsp;Then select FCEU.&nbsp;</p>
<p>This game is also playable via the Everdrive and Powerpak, provided you have updated to Mapper 30 support. It's also playable via the NES Mini, again provided you have Mapper 30 support in your emulator of choice.</p>
<p>* * *</p>
<p>Bat Lizard Bonanza is part of the MULEniverse.<span></span></p>
<p>* * *</p>
<p>More from this developer:&nbsp;<a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Uq0ZhI6Xh-A" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjcucG5n/original/PY%2FKJB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjgucG5n/original/%2FPG1Qf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjYucG5n/original/WjGiRJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzEucG5n/original/X5cmZg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzAucG5n/original/WdZ6Bc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjkucG5n/original/ORlhRb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzIucG5n/original/Jwh6fL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQzMTcxODYuanBlZw==/original/YLntd4.jpeg]]
<p>Batbarian: Testament of the Primordials is a snarky action-adventure puzzle game with a good dose of humor. Explore hundreds of secret-filled rooms, fight big bosses, gather companions for your party and use the powers of Pip—your bat buddy—to solve puzzles and escape the eldritch abyss!</p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/837460/extras/steam_crash_superoptim.gif?t=1602129150" loading="lazy"><br></figure>
<p>*Crash* ...<em>That&nbsp;</em>was the sound of you landing face first in an abyss filled with monsters, traps, and eldritch secrets. But hey, it's ok barbarian, you are not alone: Pip, your best friend -and mysteriously luminous bat- is with you. And it's only by truly working together that you'll be able to solve the abyss' puzzles, fight off its hungry denizens, discover its true purpose and maybe -just maybe- make it out alive with the secrets of the primordials.<span></span><br></p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/837460/extras/steam_pipstrike_optim.gif?t=1602129150" loading="lazy"><br><br><strong><u>Key Features</u></strong></p>
<ul><li>Gain new skills for your barbarian and elemental powers for Pip, the (magic) bat!</li><li>A narrative-driven metroidvania with dialogue choices and plenty of humor and snark.</li><li>Big numbers! 400+ rooms, 20+ hours of evolving gameplay, 10+ bosses, 60+ minutes of music and almost 30,000 words of text that a barbarian would never bother to read!</li><li>Puzzles.</li><li>RPG elements with a level-up minigame.</li><li>Contains more fruit throwing than probably any other game.</li><li>Companions that join you in your quest and help you out in fights.</li><li>Multiple endings based on your choices and actions.</li><li>The thrown fruit are NOT wasted, they are eaten by the bat (who is magic).</li><li>A ton of secrets and hidden loot just about everywhere.</li><li>The (magic) bat has a whopping FIVE different squeaking sounds!</li><li>Fewer repetitive jokes than this description has.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/837460/extras/steam_catatrap_optim.gif?t=1602129150" loading="lazy"><br><br>A controller is recommended for an optimal experience.</p>
<p>Additional Content:<br></p>
<p><a href="https://dangen-entertainment.itch.io/batbarian-original-soundtrack" target="_blank">Batbarian: Testament of the Primordials Original Soundtrack</a></p>
<p><a href="https://dangen-entertainment.itch.io/batbarian-game-ost-bundle" target="_blank">Batbarian: Testament of the Primordials + Original Soundtrack Bundle</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xYpR1WfFocA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODIuanBn/original/K%2BeULC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODUuanBn/original/3ODDlg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODMuanBn/original/ngDE5%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODEuanBn/original/dU2je0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODAuanBn/original/Rt%2FVnx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODQuanBn/original/p9bhDd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODYuanBn/original/pEbp5L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODcuanBn/original/57%2BqD6.jpg]]
<p>BEACH EPISODE is a microgame mix-in for your regular table-top RPG group. Players take &nbsp;their current characters, quickly adapt them for a rules-light session, and commence to run an anime-inspired, beach-themed adventure. All you need to play is at least 3d6 and an established set of characters. <br><br>Kick it on the beach with us. It will be relaxing... probably.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzM1NjMzMjMuanBn/original/RYMo2g.jpg]]
<p>Bear is a solo roleplaying game, where the player takes on the role of patron to a lone adventurer in another world, on another plane. You must identify where they are, what challenge they currently face, and how you can best help them. Over time, as you revisit the game, you build up the story of your adventurer's journey, how they've changed, and how you've helped them.</p>
<p>It is designed to be played anytime, anywhere, and doesn't require any materials such as pen/paper/dice to be played, simply a player.</p>
<p>Available as pdf or plain text word document; preview copies are available for free, which contains the first page-and-a-half of the game.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjA5OTcwLzMyNDIxMzguanBn/original/De5lh%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5OTcwLzMyNDIxMzkuanBn/original/jH33Zp.jpg]]
<p>I rewatched Terminator 2 recently and it put me in a 🌟mood🌟.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MuZzP25Fnjg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU2NjIyNjUucG5n/original/4vg3Cl.png]]
<p>A woman alone in a house. A mystery and a love story. Explore the present to uncover the past, in a short story of love and loss and a life well-lived.<br></p>
<p>A narrative exploration that examines a world where memories are constantly fading and jumbled. A game about dementia and what happens when you can't hold onto the things you've done or the people you've loved.</p>
<p><br></p>
<p class="text-center">Purchase link for Before I Forget is at the bottom of this page.</p>
<p class="text-center"><a href="https://3foldgames.itch.io/the-garden-radio-play" target="_blank">Please take a look at our additional radio play too here</a></p>
<p class="text-center">Dave Tucker's beautiful original soundtrack for Before I Forget is available here:</p>
<p class="text-center"><iframe style="border: 0; width: 400px; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2380771376/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/transparent=true/">&lt;a href=&quot;<a href="http://davetuckermusic.bandcamp.com/album/before-i-forget-official-soundtrack" rel="nofollow noopener">Before&quot; class=&quot;redactor-linkify-object&quot;&gt;http://davetuckermusic.bandcamp.com/album/before-i-forget-official-soundtrack&quot;&gt;B...</a> I Forget - Official Soundtrack by Dave Tucker&lt;/a&gt;</iframe><br></p>
<p><br></p><p>3-Fold Games is proud to partner with <a href="https://www.alzheimersresearchuk.org/" rel="nofollow noopener">Alzheimer’s Research UK</a>, to raise vital funds and awareness for dementia research, this World Alzheimer’s Month.</p>
<p><b>From 00:00 BST on 20 September to 00:00 BST on 4 October</b>, 3-Fold games will be making a donation to Alzheimer’s Research UK for every product sold on Itch.</p>
<p><b>Before I Forget</b></p>
<p>For every game sold £0.61 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p><b>The Garden radio play</b></p>
<p>For every game sold £0.15 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p><b>Before I Forget and The Garden radio play bundle</b></p>
<p>For every game sold £0.72 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p>Check out Alzheimer’s Research UK’s <a href="https://www.alzheimersresearchuk.org/campaigns/before-i-forget/" rel="nofollow noopener">website</a> for full details.</p>
<p><em>*Paid to Alzheimer’s Research Trading Limited which covenants all its taxable products to Alzheimer’s Research UK.&nbsp;</em></p><p><em>** Alzheimer’s Research UK is a registered charity with charity numbers 1077089 and SC042474.</em></p>
<p class="text-center"><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM1MDkxMTQucG5n/original/NDh8nG.png" loading="lazy"><br><br></figure>
<p><em>“Is this the right place?...What did I come out here for?”</em></p>
<p>A plaintive theme on the piano. A tattered 2-year-old calendar. The taste of stale air. A woman is in her house, alone, and her mind holds a mystery...</p>
<p>You are Sunita - a woman living with early onset dementia. As you wander from room to room, you discover mysterious objects, each holding a fleeting, fragmented memory. Examine faded postcards, scribbled notes, photographs, and more to uncover Sunita’s past, piece together her life-story, and understand her present.</p>
<p>Before I Forget is a story-rich, first-person exploration game from 3-Fold Games. Delicate, moving, and atmospheric, it examines the emotional impact of dementia.</p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMDAuanBn/original/QewBtO.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzAucG5n/original/8j7UCb.png" loading="lazy"></p>
<ul><li><strong>Short &amp; Sweet: </strong>Before I Forget is a short narrative gem from 3-Fold Games. With an average playtime of 1 hour, it’s designed to be experienced in one sitting.&nbsp;</li><li><strong>Story Rich: </strong>Sunita’s house is a treasure-trove of faded memories. The game-world of Before I Forget is expressive, detailed, and rich with backstory, taking you on a profound emotional journey.</li><li><strong>Vocal Talent: </strong>Featuring a vivid cast of voice actors, breathing life into Sunita and her memories. (Including Anjali Kunapaneni &amp; Bushra Laskar)</li><li><strong>Original Soundtrack:</strong> Elegant piano melodies guide you through Sunita's internal and external worlds, with an all-original score from composer, Dave Tucker. Musical refrains that search and wind like an old memory</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMDQuanBn/original/Bokdgk.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzcucG5n/original/4vmyoq.png" loading="lazy"></p>
<p><em>“We wanted to have some aspects that indicated Sunita’s Indian heritage apart from her name, and I actually did this piece of art in a little bit of software that came on my Galaxy phone, [...] so this is my homage, my paltry homage - to a really fantastic Indian - female Indian - painter [...] called Amrita Sher-Gil.”</em></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzguanBn/original/XSCNf%2F.jpg" loading="lazy"></p>
<p>Before I Forget comes with a free Developers’ Commentary, which you can activate from the game’s loading screen.&nbsp;<br></p>
<p>As you explore Sunita’s house, listen to thought-provoking interviews with the game devs as they analyse their creative processes, reveal secrets, and much more.</p>
<p><br></p>
<p><strong>REVIEWS:</strong></p>
<p>‘A delicate and unique exploration of dementia from a first-person perspective’
<strong>Mark Serrels, Cnet</strong></p>
<p>‘Beautiful and thought-provoking game’<br><strong>Katie Campbell, Pos’ability Magazine</strong></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM1MDkyMDkucG5n/original/q7eXQA.png" loading="lazy"></figure>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMTEucG5n/original/ZNaBFa.png" loading="lazy"></p>
<p>3-Fold Games are a small but mighty micro-studio from game developers Claire Morwood &amp; Chella Ramanan. Dedicated to telling diverse stories from underrepresented perspectives, the creative duo make it their mission to create games which give voice to individuals/groups who are often excluded from game narratives.&nbsp;<br></p>
<p><a href="https://www.3foldgames.uk/" rel="nofollow noopener">https://www.3foldgames.uk/</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMTMucG5n/original/S1nIDP.png" loading="lazy"></p>
<p><strong>Website:</strong>&nbsp; <a href="https://www.3foldgames.uk/" rel="nofollow noopener">https://www.3foldgames.uk/</a></p>
<p><strong>Follow us: </strong>@3foldgames</p>
<p><strong>Follow the developers:</strong> @shimmerwitch @ChellaRamanan</p>
<p><strong>Sign up to our newsletter:&nbsp;&nbsp;<a href="https://www.3foldgames.uk/" rel="nofollow noopener">https://www.3foldgames.uk/</a></strong></p>
<p><strong>Press kit:&nbsp;<strong>&nbsp;<a href="https://www.3foldgames.uk/" rel="nofollow noopener"></a><a href="https://www.3foldgames.uk/press/" rel="nofollow noopener">https://www.3foldgames.uk/press/</a></strong></strong></p>
<p><br></p>
<p><strong>Minimum System Requirements</strong><br>WINDOWS:<br>OS: Windows 7<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>DirectX: Version 9.0c<br>Storage: 1 GB available space</p>
<p>MAC:<br>OS: OS X v10.11 El Capitan or higher<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>Storage: 1 GB available space</p>
<p>LINUX:<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>Storage: 1 GB available space</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/t8E3By2NlSo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM0ODgzMzguanBn/original/EPRrHW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0MzUuanBn/original/iAwucg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0MzgucG5n/original/Lt%2BkRy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDAucG5n/original/PwGJ30.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDIucG5n/original/0387mJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDQuanBn/original/WPJVeJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDUucG5n/original/wbMxwM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDcuanBn/original/Pot63S.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NTAucG5n/original/JknS7P.png]]
<p>
	Beglitched is a game about insecurity, in our computers and ourselves. In a pastel world of networks where nobody truly knows what they're doing, hacking is a magical art and the notorious <strong>Glitch Witch</strong> is the most premium archmagi of the net. By random circumstance, <strong>YOU</strong> are her new apprentice. You must use your wits and cunning to unravel the mechanisms of an alien computer and survive amongst a veritable web of clowns, leftclickers, and filedraggers.<span></span>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Z6gFT7e5LVI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDUyLnBuZw==/original/G9CxFM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDUzLnBuZw==/original/NstVAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU0LnBuZw==/original/UY6I07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU3LnBuZw==/original/39eL3W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU1LnBuZw==/original/OydVR2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU2LnBuZw==/original/%2FZHr70.png]]
<p><em>Being</em> is an abstract adventure game that explores, from a future lens, the past and present of the Palestinian lived experience. The player controls an avatar from the distant future of Palestine on a mission to recover artifacts, memories, and messages from a mysterious house near an old border. The game's aspiration is to convey various aspects of living as a Palestinian during the past century, ranging from perpetual grief to enduring hope.</p>
<p><em>Being</em> was a part of Art Palestine International x Babycastles exhibition, <em>Over the Rainbow</em>, which showcased Palestinian art resonating out of the unique and valuable lived experiences of Palestinians --<br>both in the region and the diaspora. The show ran from March 16th to April 17th, 2017.</p>
<p><em>cw: gore, body horror, PTSD, loud and/or sudden sounds</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4OC5wbmc=/original/EaEaES.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4NC5wbmc=/original/V0QjQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4NS5wbmc=/original/rGoaQ2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4Ni5wbmc=/original/c7BSS1.png]]
<p>Beppo's Hole in One Golf is a 2d top down golf game featuring exciting golf game&nbsp;play and a challenging 9 holes of golf.&nbsp;</p>
<p>Beginners and Pros alike can find fun and challenge with Beppo's Hole in&nbsp;One Golf.<br></p>
<ul><li>Features all the pitfalls you're used to including Water Hazard, Bunkers, Rough, and Out of Bounds areas</li><li>Play it safe&nbsp;or use the&nbsp;Danger Zone™ to get more power with a risky follow through swing and go for the expert shot</li><li>For additional challenge, choose your wind and break settings, or play on Super Expert Pro™ mode</li><li>Share your scores with friends using the "save score" feature</li></ul>
<p><br></p>
<p><strong>Controls</strong></p>
<ul><li>Just use the mouse, and click the interface to play</li><li>Alternatively, use the cursor keys and space bar to complete your shots</li></ul>
<p><br></p>
<p>Thanks to everyone who donated during the jam! All proceeds have been donated to the Canadian Cancer Society (http://cancer.ca).</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTAuZ2lm/original/QPJlne.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTYucG5n/original/AcaBFE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTcucG5n/original/%2FQANtc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTgucG5n/original/U%2Bu%2Fbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTkwMDEucG5n/original/4dXBXN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTkwMDAucG5n/original/wcjlK8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTkucG5n/original/7%2FVipL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI5MTY1NzMucG5n/original/xxsJp0.png]]
<h3>What the game is about</h3>
<p><strong><span></span></strong></p>
<p>“Beyond Super: Life Behind the Mask” is a one-player journaling game that takes a peek behind the mask of a superhero.</p>
<p>The job of superheroes is just like many other jobs, at some point it becomes routine. But other challenges arise around it. Missed your moms birthday because you were saving the city from Doc Trine? Handed in work late because you were busy running from an intelligent turtle turned supervillain?</p>
<p>How do you deal with the challenges of a regular life once you have a handle on your after-hours job? Can you keep a regular job? A relationship? Raise kids? Who do you have to lie to and who can you be honest with?</p>
<p>The stakes are not if you can save the city. They are unfulfilled dreams, burnout, loss of identity and loneliness. Who you have to lie to, who you don’t spend enough time with, who you lose, and who you have to pretend to be, to protect those you love most.&nbsp;</p>
<h3>What the characters do</h3>
<p>The characters in this game try to navigate regular life while dealing with all the issues that come with it, in addition to those that come with their after-hours job of being a superhero. They will have to prioritize, sacrifice, lie and pretend, while attempting to lead two lives at once.&nbsp;</p>
<h3>What the player does</h3>
<p>The player creates a world and character, interprets prompts and tells the story of their character. They are both writer and director and decide how their character navigates life by creating a journal entry for each week during a year of their characters life.</p>
<h3>Notes</h3>
<ul><li>Players: 1 (optional 2 player rule)</li><li>Duration: a couple of hours, depending on how detailed you write</li></ul>
<p><strong>This is the first full version of this game. If you find errors, have recommendations or find anything wrong or unclear let me know at <a href="https://twitter.com/maxkaemmerer" target="_blank" rel="nofollow noopener">@maxkaemmerer</a> on twitter or leave a comment here on itch. I would appreciate any feedback,&nbsp; a short comment on whether or not you enjoyed playing it would be appreciated.</strong><br></p>
<p>This game was created as a submission to the “<a href="https://itch.io/jam/beyond-the-super-jam" target="_blank">Beyond The Super</a>” jam held by Riley Rethal and is based on “The Quiet Year” by Avery Alder.<span></span></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0NjUyMDAucG5n/original/9ZGc77.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MjkucG5n/original/hJb4Ss.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzAucG5n/original/xoq29j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzIucG5n/original/Nmqg6i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzEucG5n/original/0Zw5Iy.png]]

<h2>Out Now On:</h2>
<p><a href="https://www.microsoft.com/en-us/p/bff-or-die/9p1kmhf16gg1" rel="nofollow noopener">Xbox</a>|&nbsp;<a href="https://www.nintendo.com/games/detail/bff-or-die-switch/" rel="nofollow noopener">Switch</a>|&nbsp;<a href="https://store.playstation.com/en-us/product/UP1249-CUSA24491_00-5161590649382433" rel="nofollow noopener">PlayStation</a>|&nbsp;<a href="https://store.steampowered.com/app/652360/BFF_or_Die/" rel="nofollow noopener">Steam</a></p>
<h2>Congratulations!</h2>
<p class="text-justify">You and your friends are graduating from the prestigious Intergalactic Time Academy. No time for partying though as your first mission awaits! The Orbees are all missing. Yes, those curious little beings made of energy who power our time-tech are nowhere to be fou... no, wait! We have a faint trace on their signal. Are you brave enough to rescue them?</p>
<p class="text-justify">Prepare yourself for unknown dangers. If you find some of the Orbees they might equip your Space-Time Machine with new tech. Decide who is in charge of each gadget and combine your abilities to discover the best strategies.</p>
<p class="text-justify">Use cunning, comradeship and co-operation to survive and never forget the Academy motto: “BFF or Die!”<br></p>
<h2>Best Friends Forever</h2>
<p class="text-justify">BFF or Die is a game for you if:<br></p>
<ul class="text-justify"><li class="text-justify">You want a 2-4 player game to play with your partner/family/friends where you get to do everything as a team.
</li><li class="text-justify">Pure co-operation sounds fun to you as it’s a different feeling when you all work together.
</li><li class="text-justify">You like games that are easy to start playing but then gradually get more challenging.
</li><li class="text-justify">You like games that let you figure things out yourself rather than “hand holding” you too much and telling you what to do.&nbsp;</li><li class="text-justify">You want a game with a fun, short campaign mode which adds replayability by having difficult trophies to collect and also an unlockable “Infinite” mode.</li></ul>
<h2>Is There Online Multiplayer?</h2>
<p class="text-justify">We do not have native online multiplayer support… BUT… you *can* <a href="https://parsecgaming.com/" rel="nofollow noopener">play with your friends online by using Parsec</a>. Parsec (which is free to use) lets you share games with friends by streaming your screen and sound  to them. Their inputs (control pad or keyboard commands) then get sent to you and with almost no lag (depending on your computer and internet). This let's you play  real-time online co-op together..!<br></p>
<h2>What to Expect</h2>
<p class="text-justify">We strongly recommend playing in co-op 2, 3 or 4 player mode as this is when the game is most fun. Playtime will vary depending on your skill level but as a guide:</p>
<p class="text-justify">1-Player story game: 2-3 hours</p>
<p>2-Player story game: 2-3 hours</p>
<p class="text-justify">3-Player story game: 2-3 hours</p>
<p class="text-justify">4-Player story game: 2-3 hours <br></p>
<p class="text-justify">“The Infinite Trials”: 1-999 hours! Or maybe ∞ hours :) Complete as many randomised/procedural levels in a row as you can without losing. Go back to the start if you die.</p>
<p class="text-justify">You can either share controllers (two people per controller) or have separate controllers. As a minimum you need the keyboard and one control pad to have a 4-player game. Or you can use four separate control pads, it’s up to you.</p>
<p class="text-justify">There’s a story mode with 30 levels followed by an unlockable “Infinite Trials” mode with challenging randomised/procedural levels.<br></p>
<h2>Is Your Computer Fast Enough?</h2>
<p class="text-justify">If you have a dedicated graphics card and/or your computer can normally play 3D games then you should be able to run BFF or Die just fine.
</p>
<p class="text-justify">If you have a high resolution screen (like with newer Macbooks) then you will probably want to set the bootup options of the game to 1920x1080 to get a smooth frame rate unless you also have a super fast graphics card to match your high screen resolution.</p>
<p><br></p>
<p><strong>Info for Mac Users</strong></p>
<p>Please note that because of changes Apple have made, the game won't launch on Mac OS Catalina and above.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Dfr7Ildylhg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5My5wbmc=/original/LL7gb%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5NC5wbmc=/original/FQc5XS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5NS5wbmc=/original/hzq%2FHb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5Ni5wbmc=/original/eAT8oo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5Ny5wbmc=/original/I6n%2B9v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTEwMC5wbmc=/original/Nuvx2c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTEwMS5wbmc=/original/yQvXn0.png]]
<p><strong>The</strong> premier digital playground for all bicycles!</p><p>Bicyclism EP is a physics based party game for up to 4 split-screen players. Play as your favorite bicycle and compete in traditional bicycle games like racing, jousting, soccer, space mushroom hunting, wrestling, etc.</p><p><strong>Features</strong></p><ul><li>4 player split-screen! </li><li>1 player single-screen! </li><li>Bots to race with if you're lonely </li><li>Race against your own ghosts </li><li>3 beautiful worlds to race in, coming in at 10 levels a pop! </li><li>Each world has an alternate appearance </li><li>Rocking electronic soundtrack by Yuxxie </li><li>Multiple physics-based bicycles to play as, including the unicycle and penny farthing </li><li>2 game modes, both split-screen enabled </li><li>Grand Prix - A race tour through one of 3 worlds </li><li>Remix - A random sequence of traditional bicycle games, such as wrestling and soccer </li><li>Bicycles!</li>
</ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XsrVaJUVgwI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk1LnBuZw==/original/KuMEt2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk2LnBuZw==/original/VqWpC4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk4LnBuZw==/original/IOrtog.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk3LnBuZw==/original/zlBM71.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk0LnBuZw==/original/2sTR1d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkwLnBuZw==/original/X62Hhe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDg5LnBuZw==/original/3RNzle.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk5LnBuZw==/original/2xdkEY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkyLnBuZw==/original/JnEUKv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkxLnBuZw==/original/DZKOO0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkzLnBuZw==/original/ZpaHHR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDg4LnBuZw==/original/j%2Bs%2Fqc.png]]
<p>With a focus on growth and change in the dynamics of a friend group, Big Gay Roadtrip is a three act game created by Rose Artemis, to be played by a small group of friends.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzI5OTA0OTcucG5n/original/s7Po6q.png]]

<p>It is a truth universally acknowledged, that a bird in possession of good health must be in want of some dirt. <br></p>
<p>Birds Love Dirt! is a game about being a bird and loving dirt. It encourages you to get outside, imagine birdhood, and most importantly, play in some dirt. Or mud, sand, gravel, heck even snow would probably work! As long as you can interact with it as a bird and get messy, it's fair game. <br></p>
<p>The game is played in three phases, Exploration, Declaration, and Dirt. Some Variations are included to provide ideas for playing in a group, with children, or indoors.<br></p>
<p>If you can't afford this game, please claim a community copy! No conditions, no questions asked. I intend to keep them available for anyone who needs them.<br></p>
<p></p>
<p><em>This game is a direct result of my experience volunteering on Kuaihelani (Midway Atoll) and is dedicated with gratitude and love to all my friends there, especially my fellow peas. I miss our dance parties, baking together, quiet reading hangouts, and so much more. I'd also like to thank my friend Lizzie for reading my drafts, keeping me motivated to make this game the best it could be.<br></em></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODIzMDA0LzQ2NDE1MDYucG5n/original/HNAxLh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODIzMDA0LzQ2NDE1MTMucG5n/original/FreoXV.png]]
<p><strong>What is Black Box?</strong></p>
<p>Black Box is a single-play Tabletop Role-Playing Game (TTRPG) about hacking. It uses the Carta game system, and is designed to (fairly abstractly) simulate Black Box hacking--which is attempting to break into a network that you know almost nothing about going in.&nbsp;
</p>
<p>You can play it as a standalone, single-session game, or as part of a larger hacking campaign. It could also be played as part of a different TTRPG about hacking.&nbsp;&nbsp;</p>
<p><strong>You need:</strong></p>
<ul><li>Deck of cards with Jokers
</li><li>Set of hobby dice
</li><li>Journal or other way to record your progress
</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM0LnBuZw==/original/vnKgHv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM2LnBuZw==/original/rxWsl9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM1LnBuZw==/original/ym5EY%2F.png]]

<p><strong>Welcome to BlackJack Math!</strong><span></span><br></p>
<p>Tease your brain in this number logic game where all answers are 21 (because we're talking about blackjack, right?)<br>Swap the cards, make the math, repeat. That's all you'll need in order to complete this game!</p>
<p><strong>Key features</strong></p>
<ul><li><strong>Handcrafted Levels</strong></li></ul>
<p>The game comes with 50 handcrafted levels that will tease your brain.<br></p>
<ul><li><strong>Simple controls</strong></li></ul>
<p>The game is played simply by swaping the cards in order to change the math result to be 21.</p>
<ul><li><strong>Relaxing music</strong></li></ul>
<p><span style="color: inherit; font-size: inherit"></span><span style="color: inherit; font-size: inherit">Originally composed music to help you focus and relax while solving the puzzles (that if you do wish, can be downloaded for&nbsp;</span><strong style="color: inherit; font-size: inherit">free</strong><span style="color: inherit; font-size: inherit">&nbsp;in our soundtrack page!).</span><span style="color: inherit; font-size: inherit"></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/PG-SKulaYdc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTcucG5n/original/Kk9t8f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU5MDAucG5n/original/ddlqLM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTYucG5n/original/dj5CGJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTkucG5n/original/RMReEJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTgucG5n/original/ZaYDGB.png]]
<h2>ABOUT BLEED 2:</h2>
<p>Bleed 2 is a relentless arcade action game featuring air-dodging, bullet-reflecting, and tons of bosses.&nbsp; Now includes the randomly-generated Endless Mode, too!<br><br>Wryn is the world's greatest (and only remaining) hero. Help her battle an invading force of villains and live up to her title as the Greatest Hero of All Time!<br><br>Featuring an original soundtrack by Jukio Kallio and sound design by Joonas Turner!</p>
<p></p>
<h2>KEY FEATURES:</h2>
<ul><li>7 levels containing over 25 boss fights</li><li>Unique controls let you shoot, dodge, reflect bullets and slow time all at once</li><li>4 difficulty levels that remix enemy placement and boss patterns</li><li>Unlockable weapons, characters and abilities</li><li>Arcade Mode: Tackle the game on one life</li><li>Challenge Mode: Select and fight up to three bosses at once</li><li>Endless Mode: Randomly-generated levels</li><li>2-player local co-op for all modes (requires at least one gamepad)</li></ul>
<p><br></p>
<h2>MINIMUM REQUIREMENTS:</h2>
<p><strong>All:</strong>
Xbox 360 controller officially supported (may need third-party drivers on Mac OSX / Linux)
</p>
<p>256MB videocard (Shader Model 2.0 or higher)
350MB HDD space
2GB RAM</p>
<p><strong>Windows:</strong>
Windows XP (or later)
2.0Ghz dual core processor<span></span>
DirectX 9.0c</p>
<p><strong>Mac OSX:</strong> OS X 10.6.8
3Ghz Intel Core i3
</p>
<p><strong>Linux:
</strong>OS: <strong></strong>glibc 2.15+, 32/64-bit. S3TC support is NOT required
2.0Ghz dual core processor</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/kUloJK7nw7g" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTEucG5n/original/Xcxeq%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTMucG5n/original/1BaZDs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTUucG5n/original/M7a0Ow.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTYucG5n/original/n5KxGA.png]]
<h2>ABOUT BLEED:</h2>
<p>Wryn is a girl with a big arsenal and big dreams -- she wants to be the ultimate videogame hero! Help her take down the Greatest Heroes of All Time in an action-packed bid to claim the title for herself and show the world what a true hero looks like!<br><br>Bleed is an action-platformer focused on stylish, acrobatic dodging and fluid, challenging gameplay. There's no filler -- just you and your skills against seven levels of enemies, obstacles, breakneck set-pieces and inventive bosses!</p>
<h2></h2>
<h2>KEY FEATURES:</h2>
<ul><li>Unique control scheme enabling crazy fast action </li><li>7 levels packed with multiple set-pieces and bosses </li><li>4 difficulty levels that remix enemy placement and boss patterns </li><li>2-player local co-op for all modes (requires at least one gamepad) </li><li>3 unlockable characters with their own gameplay twists </li><li>Survive the entire game on one life in Arcade Mode </li><li>Select and battle up to three bosses at once in Challenge Mode</li></ul>
<h2></h2>
<h2>MINIMUM REQUIREMENTS:</h2>
<p><strong>All:</strong><br>Xbox 360 controller officially supported (may need third-party drivers on Mac OSX / Linux)<br></p>
<p>256MB videocard (Shader Model 2.0 or higher)<br>350MB HDD space<br>2GB RAM</p>
<p><strong>Windows:</strong><br>Windows XP (or later)<br>2.0Ghz dual core processor<span></span><br>DirectX 9.0c</p>
<p><strong>Mac OSX:</strong><br> OS X 10.6.8<br>3Ghz Intel Core i3<br></p>
<p><strong>Linux:<br></strong>OS: <strong></strong>glibc 2.15+, 32/64-bit. S3TC support is NOT required<br>2.0Ghz dual core processor</p>
<p><strong><br></strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE0LmpwZw==/original/tA5b61.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjEyLmpwZw==/original/qFqCSL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjEzLmpwZw==/original/xIYZgx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE1LmpwZw==/original/dFAr0D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE2LmpwZw==/original/pCuF3b.jpg]]

<p>Block Swap is a simple but challenging puzzle game.</p>
<p>Swap blocks to move them around the board and sort each level by color.</p>
<p>Play through 600 colorful levels over 6 different grid sizes.</p>
<p>Solve each level within the maximum amount of moves allowed to get 1 star and unlock the next level. Get 3 stars by sorting each level in the fewest amount of moves possible.</p>
<p>Switch the game to dark mode to ease your eyes while playing.</p>
<p>Featuring simple controls, clean UI, and plenty of fun &amp; addicting levels to play in your free time!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SLkjMVvk9Ok" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNTcucG5n/original/0%2BhBAL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNjkucG5n/original/2FIvnu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNzcucG5n/original/%2BZW2I6.png]]
<p>I made this game for a soccer themed game jam. I don't give a shit about soccer really, but was interested in the culture around it. When I was 15, it was the World Cup in my country.&nbsp; That's the closest feelings I have to it and built this game from there.</p>
<p><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzE4ODU3ODUucG5n/original/QybfVA.png]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUzMjQ3OTYuZ2lm/original/Mj%2FJ%2FF.gif" style="color: inherit; font-size: inherit" loading="lazy"></p>
<figure><img src="https://img.itch.zone/aW1nLzUzMTUzODMucG5n/original/327%2BNb.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p>Rebind the keys with&nbsp;TAB<br></p>
<p>[Content warning:&nbsp;potentially gross gushy sounds, blood imagery]<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzU1NDAzNjcucG5n/original/ax5gOL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzUzMDY0ODIucG5n/original/JbvqQo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzU1NDAzODIucG5n/original/XGEcej.png]]
<p>A relaxing flight through the forest. Play as a bumblebee collecting nectar for it's hive. This is a short, chill experience. Take your time and explore the forest. Can you find all the nectar?<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjcucG5n/original/VFCQ7h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjgucG5n/original/iLidYJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjYucG5n/original/FPXeKk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjkucG5n/original/P6Fk8a.png]]

<h3 class="text-center">What was I trying to make here?</h3>
<p class="text-center"><em>Boa Retina</em>&nbsp;is a game that dives deep into messy gender uncertainty. It is an uncomfortable blend of abstract golden-age arcade design, retro computer aesthetic, the unhealthy ways my gender feelings manifested before coming out, and external conflicts from things trying to keep life in order. It is a story of breaking free…</p>
<p class="text-center"><em>breaking free…</em></p>
<hr>
<h3 class="text-center">What you get when you purchase the game...</h3>
<ul><li>25 Minutes of ~F E E L I N G S~</li><li>Zine detailing development</li><li>Skye the Cloud Fairy Atari 2600 ROM</li></ul>
<hr>
<p class="text-center"><em>Boa Retina</em> was developed as part of the Juegos Rancheros <a href="http://juegosrancheros.com/residencies/" target="_blank" rel="nofollow noopener">Arcade of Anything residency program</a>. A physical, multi-device version of the game was presented at an <a href="http://juegosrancheros.com/1752/events/boa-retina/" target="_blank" rel="nofollow noopener">exhibition on June 18th, 2017</a>, with the digital version releasing publicly on June 30th.</p>
<hr>
<p class="text-center"><em><strong>Content Warning:</strong> Transphobia and emotional/physical abuse.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzcxMTc3NC5wbmc=/original/MfVpgc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzY3ODQ1My5wbmc=/original/b%2FGu0d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzcxMTc3OC5wbmc=/original/u8LLL0.png]]
<p>Bombing!! is a game where you create public art in a retro world.</p>
<p>With several colour variations, cap patterns and with 95% of every level being paintable, there's few limitations on what you want to create.<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTUucG5n/original/Ckwwn7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjAzNjQuanBn/original/%2BqvNkv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTYucG5n/original/iTCRFU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTcucG5n/original/pLIpnA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjUwNjcuanBn/original/MBJ0SX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjAzNTEuanBn/original/R7TBhZ.jpg]]
<p>Bonbon is a short horror story, about your childhood.<br></p>
<p><strong>Even if you weren't a small child in the 80s, you've been here before. Just you and your friendly toys.&nbsp;But this new friend... this is something you are not yet able to understand.</strong></p>
<p>&nbsp;Includes Steam key.</p>
<blockquote><a href="https://www.rockpapershotgun.com/2017/08/04/bonbon-horror-game-review/" target="_blank" rel="nofollow noopener">Adam Smith, Rock Paper Shotgun</a>:</blockquote>
<blockquote>"a short, smart tale of domestic horror"<br>"Bonbon’s home, and the voice of mummy shouting from indoors, is authentic"<br>"the confusion between what is real and what isn’t, and what is threatening and what is malign, rings true"<br>"a house of horrors that hit far closer to home than most"</blockquote>
<blockquote>&nbsp;<br><a href="http://www.kotaku.co.uk/2017/08/08/bonbon" target="_blank" rel="nofollow noopener">Matt Wales, Kotaku</a>:</blockquote>
<blockquote>"it's ambitious, it's often fascinating, and there are elements that linger long after it's over"<br>"there's a lot to admire and appreciate here - from the thread of an entirely different story ... to the clarity of vision and the authentic, evocative period atmosphere"<br>"there's certainly enough craft and creativity here, and a lingering strangeness to this everyday terror"</blockquote>
<p><br></p>
<p>Bonbon is a short-form domestic horror narrative (or walking sim, if you like), made in Unreal Engine 4, set in a suburban UK home in the 1980s,&nbsp;in which you navigate childhood events beyond your capacity to understand, and without parental context.</p>
<p>Play time is around 20 to 40 minutes, depending on your play-style. Progression requires the completion of some simple tasks, but it is mostly about exploring the objects and events around you. Play with mouse and keyboard, or a 360-style gamepad.</p>
<p><br></p><p></p><p><strong>Content warnings:</strong><br>Bonbon deals with grown-up themes and suggestions of child-abuse. There is no literal violence or onscreen abuse, it is entirely in the subtext.<br>There is one jump-scare near the end of the game.<br>As one player pointed out in a review, the game does contain a racial slur in the dialogue (g***y), which was carefully considered as relevant to the source material of the scene, and the setting in the UK in the 1980s.</p><br><p></p><p><br></p>
<p>If you purchase the DRM-free version via itch.io, you will be able to request a Steam key via the link on the download screen.</p>
<h4>&nbsp;</h4>
<p><em>Recommended system specifications for Windows PC version:</em></p>
<ul><li>GeForce GTX 950, or equivalent/faster graphics card</li><li>Quad-core processor, 2.5GHz or faster</li><li>8Gb RAM or more</li><li>Windows 7 or later&nbsp;</li></ul>
<p><br></p>
<p>Thanks to <a href="http://www.electrondance.com/" target="_blank" rel="nofollow noopener">Joel Goodwin</a> for providing some very important last minute feedback!<br></p>
<p>Journalists, reviewers, tubers and streamers: you can find the <a href="https://medium.com/@aethericgames/presskit-bonbon-94f1dcf18484" target="_blank" rel="nofollow noopener">press-kit here</a>. Download keys can be requested from Pixeljam via the contact details in the press-kit.</p>
<p>&nbsp;<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/jDQILXQNzw0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzUwOS5wbmc=/original/M%2FTcbQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzUxMC5wbmc=/original/0zGURU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzcxMjE0MS5naWY=/original/VwUQLG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzc0ODQ1OS5qcGc=/original/CkhGc%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzU0MC5wbmc=/original/t9P1cy.png]]
<p>The Book of Common Games is a collection of micro games, fluxus-style scores, and mindfulness exercises that can be played with very little preparation and materials.&nbsp; There are 23 games in this book.&nbsp; If you play any of these games, please share your experience with me, either in the comments below or on social media with #commongames</p>
<p><a href="https://commongames.neocities.org/commongamesV4.html" target="_blank" rel="nofollow noopener">The web edition can be found at this link...</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4NjcucG5n/original/oeTMee.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4MTgucG5n/original/eHMZNu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4MTcucG5n/original/vpulUq.png]]
<p><strong>A Librarians-and-Necromancy Fantasy Novel with Small Town Charm in a City of the Dead</strong><em><br></em></p>
<p><em>The others believe in blood and bone. Ree believes in books.</em></p>
<p>She manages the libraries and draws maps for the denizens of her hometown, a secret society of necromancers hiding in a sprawling underground crypt. Though they look down on her for not practicing their craft, Ree has bigger ambitions than raising the dead. She’s going to resurrect therianthropy, the ancient magic of shapeshifting. Or at least -- she’ll do it if it really exists. And if she can find the books that prove it.</p>
<p>But Smythe, a chatty historian from the world above, stumbles into the crypt and takes a curse meant for Ree. Now she has to find a way to save him, keep the townsfolk off her back, and convince her necromancer parents that shapeshifting is a viable career path.</p>
<p>Ree is certain that if she and Smythe combine their scholarly skill sets, they’ll find the right books to solve their problems. But Ree’s search for power might put the entire town in danger, and her father and the other townsfolk want Smythe dead lest he reveal their home to a world that hates them.</p><p><br></p><p><strong>SEMI-FINALIST IN THE SPFBO5 FANTASY CONTEST<br>NOMINATED FOR BEST DEBUT IN THE BOOKNEST FANTASY AWARDS 2019</strong></p><p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/zPTJW_AnCp8" allowfullscreen="" frameborder="0"></iframe><br></div>
<p>(Length: 100,000 words, the equivalent of 422 paperback pages.)<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zPTJW_AnCp8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzI2MTc0ODkucG5n/original/0P8Xyu.png]]

<p><strong>Born to Run</strong> is a game about escaping your small, good-for-nothing hometown.&nbsp;&nbsp;</p>
<p>You play a group of young adults with dreams much too big for your circumstances. Luckily, you are not alone. Together you guard each other's dreams and visions as you head out on a last chance power drive.&nbsp;</p>
<p>So chrome your wheels, fuel your engines, step over the line, tramps like you were born to run.</p>
<p></p>
<p><em>I will likely add things like a cover and art assets to this at some point, but right now I'm just very happy to have written my first game :)</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTUyNzQyLzU0MDEyMjgucG5n/original/t7slQH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTUyNzQyLzU0MDEyMzAucG5n/original/JkU%2F3s.png]]
<p>BOTOLO is a beautiful, new multiplayer game from The Floor is Jelly creator Ian Snyder. BOTOLO is a fast paced mindreading competition, a dance inside the negative space between your opponent's thoughts. Mind-wrestle your opponents into submission inside hypnotic fields of pattern and color. Steal the ball and protect it from your opponent in this hybrid game of keepaway and king-of-the-hill. </p><p>No friends? No problem. BOTOLO has built-in, state-of-the-art friend simulations! Granted, these incredible programs might not appreciate the simple beauty of a sunset, or lend you a reassuring hug in a time of need, but they DO adapt to your playstyle mid-match, which is almost as good.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjU5LmdpZg==/original/XzHJu1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUyLnBuZw==/original/BGF%2FwP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYwLmdpZg==/original/RUMcgi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUzLnBuZw==/original/eq1pnO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYyLmdpZg==/original/%2BbGsN5.gif]]
<p>I'm making a racing game for two players. They share one keyboard. Their cars bounce off of each other, and off of the walls. The maps are randomly generated, but you can replay your favourites&nbsp;– if you can remember the three words the generator used to make them. It's a blast!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zPLULsk-kog" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU3MDE2MjMucG5n/original/1BQ%2Brj.png]]
<p>Think inside the box...</p>
<p>BOX is a logic puzzle-platformer where you must navigate small mazes and symmetrical obstacles to collect every object. Rotate the stage itself to change the layout of the maze, as well as your own position, to reach impossible places.</p>
<p>47 puzzles. VHS aesthetic. Soft electronic music. Boxes.</p>
<p>A chair. A screen. And you.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/IMOfeadzLwE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI0NTk5MDUucG5n/original/dWAawz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI0NTk5MDYucG5n/original/xmQ2T5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI1NDMwNjEucG5n/original/Lv0G6A.png]]
<p>Yume Nikki fan-game.</p>
<p>Boy's Work. Please handle this boy with care.<br>Four (4) dream worlds with over ten (10) effects to collect.</p>
<p>Made in RPG Maker MV the afternoon of the deadline<br>for Dream Diary Jam 2 (2018)--</p>
<p>- Version 0.00 (pls message me about bugs, broken stuff, and/or bad choices)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjAucG5n/original/o04Fyr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjMucG5n/original/h%2F7WVZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjEucG5n/original/RowLKL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MTkucG5n/original/eANp69.png]]
<p>Welcome to <strong>Brave Zenith!</strong></p>
<p>The world ended a long time ago, and no one gives a damn.</p>
<p>You are an Adventurer:&nbsp;<strong>ambitious, indebted, BRAVE.</strong></p>
<p>Explore the ruined world of <em>pastpresent</em>, meet colourful (and deadly) creatures, see the sights of the Second City, partake in delicious Monkey Oil. The Archipelago is&nbsp; your oyster!</p>
<p>This is a living document, so expect it to be altered frequently as we move closer to the final version.<br></p>
<p>Design/Layout/Writing: <a href="https://twitter.com/KnightRamen" rel="nofollow noopener">Giuliano Roverato</a></p>
<p>Art: <a href="https://twitter.com/silvazuao" rel="nofollow noopener">Silva João</a></p>
<p>Additional Art: <a href="https://twitter.com/lu_waro" rel="nofollow noopener">Lucas Waroshi</a></p>
<p></p>
<p><strong>CURRENT FEATURES</strong><br></p>
<p><strong><strong>Simple resolution mechanic:&nbsp;</strong>roll 2d6, add bonuses, compare to a target number. That's pretty much it.</strong></p>
<p><strong>3 Origins</strong></p>
<ul><li>Humans - lovers of ideology, probably depressed (and responsible for ending the world).</li><li>Catfolk - cats that walk and talk, lovers of food and hospitality.</li><li>Jellies - wobbly and goofy,&nbsp;unburdened by tradition, possibly delicious.</li></ul>
<p><strong>4 Vocations</strong></p>
<ul><li>Freelancer - hit stuff, be strong, wear a cool jacket.</li><li>Mixologist - make up your very own special grog,&nbsp; get drunk, make friends.</li><li>Thief&nbsp; - steal stuff, create disguises, leave no locked door behind.</li><li>Magic User - create spells, manipulate the mists, wear a cool hat!</li></ul>
<p><br></p>
<p><strong>UPCOMING FEATURES</strong></p>
<p><strong>Referee Section:&nbsp;</strong>learn more about the world of Brave Zenith and how to run it.</p>
<p><strong>Bestiary: </strong>meet 14 different critters that inhabit the archipelago.</p>
<p><strong>Starter Adventure:&nbsp;</strong><em>The Fat Bat Bath -&nbsp;</em>clean up and explore a haunted-motel-turned-bathhouse before the new owner arrives.&nbsp;Get introduced to the Second City and its worst neighbourhood, the Mangual.</p>
<p><strong><strong></strong></strong></p>
<p></p>
<p><span></span></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTMuanBlZw==/original/Xp3%2Fhq.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTIuanBlZw==/original/S%2FRTQQ.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTAuanBlZw==/original/gSV%2Brh.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTEuanBlZw==/original/himYdZ.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTcuanBlZw==/original/cGpq0B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTYuanBlZw==/original/mnMYwh.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTguanBlZw==/original/nel8n1.jpeg]]
<p>Breaker Blocks is a 10-minute game of circuit building and sabotage for two players. Place tiles to build better circuits than your opponent, then try to end the game while you're winning. </p><p>Breaker Blocks was first designed as a jam project at Philly Dev Night and has since been released independently on <a href="http://www.spriteborne.com" rel="nofollow noopener">Spriteborne.com</a> where each copy is personally crafted and shipped directly from the designer to you. By "the designer" I mean "me" and "it's weird to write about myself in the third person."</p><p>People seem to like it. It's been featured at Philly GamesCon, TooManyGames, International Tabletop Day, and several other places. It was a winner in the Smithsonian Indie Arcade Coast-to-Coast 2016 competition and shown off in the Smithsonian American Art Museum for it. It's a nominee in the SXSW 2016 Gaming Awards. I think it's pretty fun. My parents like it. Why are you still reading this?</p><p>Listed here is a pay-what-you-want print-and-play version of the game. The physical version is available <a href="http://www.spriteborne.com/products/breakerblocks" target="_blank" rel="nofollow noopener">here</a>. </p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTMzNzYvMjM3MjYzLmpwZw==/original/HMSMYe.jpg]]
<p><em><a href="http://freeplay.net.au/awards-2018/" target="_blank" rel="nofollow noopener">Freeplay Awards Finalist 2018 — Excellence in Narrative and Non-Digital Game Award</a></em></p><p><em><img src="https://img.itch.zone/aW1nLzI5MjIyNjIucG5n/original/yBhuoi.png" loading="lazy"><br></em></p>
<p><em>In the Weird Age of the late 21st century, the newly-discovered occult sciences are changing the world. If you want to learn them, Occultar Academy is the place to go. In this secluded island school, talented students from all over the world can learn sorcery and occultech under the Foundation's watchful eye.</em></p>
<p><em>...But they won't tell you everything.</em></p>
<p><em>Occult science is great, but there are risks. Behind the scenes, in the labs beneath the school, they're researching the dangerous secrets of outer science. The Forbidden Sections beneath the library hide secrets once lost to history, from forgotten occultech to the existence of the Ancient Ones. If the wrong person finds them, it could mean the end of the world.</em></p>
<p><em></em><em><strong>Breakfast Cult</strong></em> is a <em>Fate Accelerated</em> TTRPG about cosmic horror mysteries&nbsp;and high school drama. Play students at the world's best occult school as they solve mysteries, uncover the terrible secrets of the Ancient Ones, and try to find which of their classmates is conspiring against them before it's too late!<br></p>
<p><em><img src="https://img.itch.zone/aW1nLzI5MjIyNzIucG5n/original/ajR2H3.png" style="max-width: 100%" loading="lazy"></em></p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-peer-pressure" target="_blank">Peer Pressure:</a></em></strong>&nbsp;A rules primer and example mystery.&nbsp;<strong>Name your own price!</strong></p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-game-over" target="_blank">Game&nbsp;Over:</a></em></strong>&nbsp;A major&nbsp;expansion pack that adds some cool technology, Factions, a bunch of new pregen characters and encounters, and&nbsp;digital-themed Ancient&nbsp;Ones!</p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-lovecraft" target="_blank">Sweet Shub And Hella Thotep:</a></em></strong>&nbsp;An expansion pack that adds some Cthulhu&nbsp;Mythos to Occultar with an alternate setting, new pregen characters and encounters, and some Great Old Ones!</p>
<p><img src="https://img.itch.zone/aW1nLzI5MjIyNzMucG5n/original/TGOJgu.png" style="color: inherit; font-size: inherit" loading="lazy"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzcucG5n/original/eYjuPV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzgucG5n/original/CSK8uz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzkucG5n/original/8NWKPY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1NDAucG5n/original/A4ilDg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1ODMucG5n/original/CiFTKE.png]]

<p><em><span class="">You are two monks living in a monastery. You’ve both taken a </span></em><span class=""><em>vow of silence: for one year, you will not speak. In this year of silence, you fall in love.</em></span><em><em><span class=""></span></em></em><em><br></em></p>
<p><em>Brother, Silent</em> is a letter-writing roleplaying game for two people who live together. Over days or weeks, you will leave messages for each other in a secret spot in your home, expressing your feelings for each other however you can without the abbot finding out.<em><span class=""></span></em><em> </em>All you need is pen and paper.<em><br></em></p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzMzMTMyMTEucG5n/original/YBrlt2.png]]
<p>Welcome to this cozy little island where you find yourself as... a house? Explore the area, unlock abilities, go on a date, or go fishing! Talk to other buildings and form relationships... or don't?&nbsp;<br></p>
<p>---------------------------------------</p>
<p>Controls:</p>
<p>AWSD to move<br></p>
<p>Tab - Inventory</p>
<p>Space - Jump</p>
<p>Left Shift - Sh'move</p>
<p>E - Confirm/Interact</p>
<p>---------------------------------------</p>
<p>Credits:</p>
<p>Music - <a href="https://twitter.com/theTreeSerok" rel="nofollow noopener">https://twitter.com/theTreeSerok</a><br>3D Models - <a href="https://www.kenney.nl/assets" rel="nofollow noopener">https://www.kenney.nl/assets</a><br>UI -<a href="https://edslashem.itch.io/rpg-asset-pack-2">https://edslashem.itch.io/rpg-asset-pack-2</a><br>Key Prompts - <a href="https://retrocademedia.itch.io/buttonprompts4">https://retrocademedia.itch.io/buttonprompts4</a><br>Item Icons - <a href="https://cazwolf.itch.io/caz-pixel-1">https://cazwolf.itch.io/caz-pixel-1</a><br>Font - <a href="https://somepx.itch.io/humble-fonts-gold">https://somepx.itch.io/humble-fonts-gold</a><br>Textures (also adapted some into sprites) -&nbsp;<a href="https://opengameart.org/users/keith333" rel="nofollow noopener">https://opengameart.org/users/keith333</a>&nbsp;<br>(Secret) Dog -&nbsp;<a href="https://pvgames.itch.io/medieval-town-and-country-interiors-bundle">https://pvgames.itch.io/medieval-town-and-country-interiors-bundle</a></p>
<p>Made in Unity<br>Cinemachine for Camera<br>Yarn for Dialogue</p>
<p>Special Thanks to the viewers on Twitch<br><a href="https://www.twitch.tv/potatomonstee" rel="nofollow noopener">https://www.twitch.tv/potatomonstee</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/u4q6yFbadT8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzY0MDIuZ2lm/original/Q5XLfp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzODEuZ2lm/original/nS9pXC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzNzAuZ2lm/original/W%2BYYSY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzNjQuZ2lm/original/VurQYd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzc3ODMuZ2lm/original/2XF%2FPv.gif]]
<p><strong>Dodge hundreds of thousands of bullets, in this bullet-hell adventure!<br> Supports mouse, keyboard, and controllers, and 4-player couch co-op!<br>Made for Windows, but has limited support for Mac too!<br></strong></p>
<div class=""><iframe src="https://www.youtube.com/embed/IrpqcqYR_bI" allowfullscreen="" width="600" height="311" frameborder="0"></iframe><strong></strong><br></div>
<p>
</p>
<p><strong>Bullet Heaven 2</strong> is a shoot-em-up spinoff of the <strong>Epic Battle Fantasy series</strong>. It's a game all about shooting everything that moves, while dodging hundreds of bullets per second!</p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/412670/extras/store1.png?t=1568759243" loading="lazy"><br><br></figure>
<h2>Bullet Heaven 2 features:</h2>
<ul><li> Mesmerizing bullet patterns and tons of cute monsters to shoot in the face. </li><li> 70 unique levels, including epic boss battles and endless survival levels.
</li><li> 18 awesome musical tracks from Phyrnna!<strong></strong>
</li><li> Up to 4 players can play in local co-op. </li><li> Support for mouse, keyboard, or controller controls.
</li><li> 8 playable characters, each with several different weapons and costumes. </li><li> 3 difficulties: Normal (25% bullets), Hard (50% bullets), and Heavenly (100% bullets). </li><li> Unlockable cheats and handicaps, which can be used to customize the difficulty further. </li><li> Tons of achievements, unlockables, and ranks to collect. </li><li> Lots of juvenile dialogue from the characters and plenty of video game references. </li></ul>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/412670/extras/store2.png?t=1568759243" loading="lazy"><br></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/IrpqcqYR_bI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTg3NDYuanBn/original/bdvucl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMjAuanBn/original/%2B%2BQmrF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTIuanBn/original/Jj2uDU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTg3NDQuanBn/original/q6rRXb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTQuanBn/original/39fAL5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTMuanBn/original/pqhjWc.jpg]]
<p>Bumble Butt is an arcade game where Betty Buzz takes out nasty bugs with the power of her bottom! Or rather, the stingers she shoots out of it!</p>
<p>That's right, player's are always shooting in the direction opposite they're facing! This means it's required to navigate through the swarms of enemies and their attacks, whilst also trying to aim from the rear at the same time! <br>Master the use of your behind (bee-hind?)! Defeat a wide variety of bogus bugs swarming across 50 levels, and don't let those invading insects kill your buzz!</p>
<ul><li>    Perfect for a short session, or a longer one if you want a big score!
</li><li>    Plenty of replayability, as it's all about getting more points than the last time!
</li><li>    Can resume from every tenth level, making it ideal for pick up and play!
</li><li>    50 levels!
</li><li>    A funky folky soundtrack!
</li><li>    Controller highly recommended, but keyboards also supported!</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hmQ3gFmO6hE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTAucG5n/original/uhz3Y1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTYucG5n/original/K9NG2o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTQucG5n/original/MKM3LW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTcucG5n/original/fxW%2FHK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTkucG5n/original/LoiA2r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNjAucG5n/original/eFnsdr.png]]
<p>you and your friends work for the local&nbsp;<em>burger maestro</em> franchise. but lately, things haven't seemed quite right at work. play through six weeks of frantic fast-food flailing trying to keep the restaurant afloat amidst the troubles in this short role-playing game.</p>
<p>designed for 2-6 players, plus a GM. designed for beginners, no fancy equipment required.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjkzODE4LzM4MjkyNzUucG5n/original/EA5LCg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzODE4LzM4MjczNDcuanBn/original/SvTVjI.jpg]]

<p>This is a game.<br><br>In it, you drive a bus through the desert. Maybe you listen to the radio! That's on you. I don't have a radio for you to download. Should you download a car, it'll probably come with a radio pre-installed.<br><br>Godspeed, bus driver<br></p>

[img width=500 [https://img.itch.zone/aW1nLzYwMjk1MTcuanBn/original/AGC2XS.jpg]]
<h3>-&nbsp; about&nbsp; -</h3>
<p>A digital playground where you can drag and drop images from your computer to plant flowers, grow vines, start fires and upload color into an expansive network of butterflowers! Uncover the memories of a past inhabitant as you explore the evolving space of the ecosystem and breathe new life from your files and interactions with the terrain.</p>
<p><br></p>
<p>⚘<br></p>
<blockquote><br>Spring renews from Winter in a few frames           luminous GANHUA tulips grow at the corners now in a hyperlapse (expecting)<br><br>From a telephone post all I can see is the motion          white,      yellow,       blue pixelated fields easing between 2 points<br><br>that cold, black oooze spills over my feet        Fills the loose wrinkles in the bag<br><br>looped actions unfeeling , limiting run infinite between frames they are mutated then re-compiled
<br><br>60fps</blockquote>
<p>⚘</p>
<p><br></p>
<pre>-  -  -  -  - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
-  -  -  -   experience is about 30 minutes long  -  -  -  -
-  -  -  -  - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -</pre>
<p><br></p>
<h3>-&nbsp; credits&nbsp; -</h3>
<p>design,code,art ~&gt;&nbsp; <a href="https://twitter.com/funsworkings" target="_blank" rel="nofollow noopener">@funsworkings</a>&nbsp;</p>
<p>art,design ~&gt;&nbsp;&nbsp;<a href="https://twitter.com/eastonself" target="_blank" rel="nofollow noopener">@eastonself</a></p>
<p>audio ~&gt;&nbsp;&nbsp;<a href="https://twitter.com/certain_lives" target="_blank" rel="nofollow noopener">@certain_lives</a></p>
<p>assets&nbsp;~&gt;&nbsp;&nbsp;<a href="https://bit.ly/3tuR1II" target="_blank" rel="nofollow noopener">link</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/8McWThJtgkA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTQucG5n/original/0BOxLK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTIucG5n/original/Us2tPt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTMucG5n/original/5N0XtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTcucG5n/original/9VFx6G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTYucG5n/original/YwcDxo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTUucG5n/original/dIFzt4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTgucG5n/original/Q%2BwcHp.png]]
<p><a href="https://github.com/asalazar516/Game-Off-Project" rel="nofollow noopener">https://github.com/asalazar516/Game-Off-Project</a></p>
<p>Created for the Game Off Game Jam</p>
<p>A two player competitive snake!&nbsp;</p>
<p>Goal:&nbsp;</p>
<p>Eat the food to make the snake big before times run out.&nbsp;<br>Do not let the snake hit the wall or itself or each other.<br>Try to have the biggest snake!</p>
<p>Controls:<br>Player 1:<br>Snake Color: Purple<br>Up:&nbsp;&nbsp; W<br></p>
<p>Down: S</p>
<p>Left: A<br></p>
<p>Right: D</p>
<p>Return to main menu: Escape</p>
<p>Controls:<br>Player 2:</p>
<p>Snake Color: Orange<br>Up: Up Arrow<br></p>
<p>Down: Down Arrow<br></p>
<p>Left: Left Arrow<br></p>
<p>Right: Right Arrow<br></p>
<p>Return to main menu: Escape</p>
<p>Thanks for downloading and playing!</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTk5NDMzLzkzMzMwMC5wbmc=/original/6wCrRU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk5NDMzLzk3MjcxOS5naWY=/original/GfFQdY.gif]]

<p><strong>Calico</strong> is an interactive fiction engine for web&nbsp;games, powered by Inkle's&nbsp;<a href="https://www.inklestudios.com/ink/" target="_blank" rel="nofollow noopener">ink</a>. Designed as a replacement to the default Ink web player,&nbsp;Calico offers&nbsp;a borderline irresponsible number of new features, such as&nbsp;custom tags, keyboard shortcuts, full mobile compatibility, custom text transitions, and simple text styling and parsing.</p>
<p>Plus, thanks to a simple plug-in framework, Calico can be patched to support just about anything else, such as preloading files, storylets, saving, loading, rewinding to previous passages, and much, much more.<br></p>
<p>To see Calico in action, check out&nbsp;<a href="https://communistsister.itch.io/winter" target="_blank">Winter</a>, written by Freya Campbell and myself.</p>
<p>You can find a guide to the basics of ink <a href="https://github.com/elliotherriman/calico/blob/main/documentation/ink%20guide.md" target="_blank" rel="nofollow noopener">here</a>. For a guide on how to build a game in Calico, head <a href="https://github.com/elliotherriman/calico/blob/master/documentation/getting%20started.md" target="_blank" rel="nofollow noopener">here</a>.</p>
<p>Calico was developed alongside <a href="https://elliotherriman.itch.io/catmint" target="_blank" style="font-size: inherit">Catmint</a>, a simple application that can automatically&nbsp;compile your ink files for you.&nbsp;<br></p>
<details><summary><strong>Instructions</strong></summary>
<p>Calico is a work in progress. Right now, the documentation is lacking, thanks to real world responsibilities and my hands kind of hurting. Check out the guide above,&nbsp;but please don't hesitate to reach out to me if you have any issues — I'm right <a href="https://twitter.com/elliotherriman" target="_blank" style="font-size: inherit" rel="nofollow noopener">here</a> on Twitter.<br></p>
<p>And likewise, if you're interested in helping develop this engine, clean up my possibly dangerous Javascript, or develop new patches, please don't hesitate to reach out. As soon as documentation's written, I'm going to start setting up an online repository of patches, and I'd be thrilled to have you on board.</p>
</details>
<details><summary><strong>Acknowledgements</strong></summary>
<p>Special thanks to Freya, Jemma, and every single person who let me talk their ear off about this engine.<br></p><p>Cover art by <a href="https://twitter.com/saracastically_" style="font-size: inherit" rel="nofollow noopener">Sara Litzenberger</a>, whomst I very much love.</p><p>And thanks to the Bitsy community, and all your wonderful hacks, for being the inspiration for this little project.</p></details>

[img width=500 [https://img.itch.zone/aW1nLzU4NTEyNjUucG5n/original/M23XZO.png]]
<p><img src="https://img.itch.zone/aW1nLzQ4MDUxMzAucG5n/original/PyyF42.png" loading="lazy"><br></p>
<p><br></p>
<p>Calico is a day-in-the-life community sim game where you are given an important and adorable task: rebuild the town’s cat café and fill it with cute and cuddly creatures! Build up your café by filling it with cute furniture, fun decorations, yummy pastries, and get it bustling with animals again!<br><br>Calico is meant to make you feel all warm and fuzzy inside. The gameplay reflects that with a laid back, low stress creative environment to explore and play in.<br><br><strong>Character Creator</strong><br>The Calico character creator will allow players to create their own magical person to experience the world through. There will also be plenty of clothing to choose from and collect throughout the game!<br><br><strong>All animals are interactive!<br></strong><br>The player will encounter many animals in the world of Calico. Once befriended, you can name them, add them to your party, or send them to their new home at the café. Animals in your party will follow you everywhere you go and listen to your commands. The animals in your café will relax and play with any customers that pop in for a visit.<br><br><strong>Café&nbsp;Decoration</strong></p>
<p>Your task in Calico is to bring the town's café back to life again. This isn’t just achieved by bringing in cats and animals alone, however – you can also decorate your café with furniture of different styles to create the perfect cozy home for you and your animals!<br><br><strong>Cooking Minigame</strong><br></p>
<p>Create a wonderful café by making yummy bakes goods and drinks for the townspeople! Learn about your follow villagers to pick and choose their favorite foods to sell!<br><br><strong>Magic of Calico</strong><br></p>
<p>We wanted there to be no limits to how you could find happiness in Calico. Magic potions are a system that allow us to break the rules of what is possible and to find what would be most fun. Example: the More-to-pet Potion allows the player to magically turn a single animal giant-sized! You can hang out with a giant animal, or even ride a giant cat!<br><br>Links:</p><p>Check patch notes here!&nbsp;<a href="https://whitethorndigital.com/calicopatchnotes" rel="nofollow noopener">https://whitethorndigital.com/calicopatchnotes</a></p>
<p>Contact us at info@calicogame.com if you need any help!<br><a href="https://whitethorndigital.com/calico" rel="nofollow noopener">Website</a><br><a href="https://twitter.com/calicogame" rel="nofollow noopener">Twitter</a><br><a href="https://slide20xx.bandcamp.com/album/calico-original-soundtrack" rel="nofollow noopener">Soundtrack</a><br><a href="https://discord.gg/2RfZQpx" rel="nofollow noopener">Discord</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNDkuanBn/original/GR3sZ9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTAuanBn/original/Rc9yXP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwMjcucG5n/original/4I2QQw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTIuanBn/original/pydLCo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwMjYucG5n/original/upAVDb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTEuanBn/original/ln%2Boee.jpg]]
<p>In this calm sailing adventure, you'll use different navigation techniques to find the island Mystico. <br>You'll get hints from differnet island villagers or debris you find along your journey. Use the sun, stars and your guts to find the right way around this vast ocean to find your next goal. But you could also just sail in one direction and take a few deep breaths to relax for a few minutes.<br><br>This is a bit more polished version of a GGJ2021 entry which you can find here:<br><a href="https://globalgamejam.org/2021/games/horizon-edge-9" rel="nofollow noopener">https://globalgamejam.org/2021/games/horizon-edge-9</a><br><br>Controls:</p>
<p>W - Speed up<br>S - Speed down <br>A - Steer left <br>D - Steer right <br>Left click and drag - orbit camera<br>Interact with the UI with the mouse.</p>
<p>Sorry for not having&nbsp;controller support.</p>
<p><br></p>
<p>Credits:&nbsp;</p>
<p>Julian Viezens&nbsp;<a href="https://twitter.com/viezensj" target="_blank" rel="nofollow noopener">@viezensj</a>&nbsp;: programming, shader, modelling<br>Sebasitan "Hati" Krause&nbsp;<a href="https://twitter.com/HatiEth" rel="nofollow noopener">@HatiEth</a>&nbsp;: programming, modelling, UI<br>Mathew Varkki&nbsp;<a href="https://twitter.com/rayvshimself" rel="nofollow noopener">@rayvshimself</a>&nbsp;: programming, audio, shader<br>Kai Eschmann&nbsp;<a href="https://twitter.com/soulmoll" rel="nofollow noopener">@soulmoll</a>&nbsp;: programming</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTgucG5n/original/J9IoBa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTcucG5n/original/7NfdBR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTkucG5n/original/C8iShZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MjAucG5n/original/p4VC7n.png]]
<p>VECTORS: ACHIEVED...ENGINE: CRITICAL...SHIELDS: CRITICAL...FUEL: CRITICAL...WEAPONS: CRITICAL...EXISTENCE: CONFIRMED</p>
<p>LOAD:</p>
<p>STORE PAGE</p>
<p>Can Androids Pray: Blue&nbsp;is a sitcom-length&nbsp;choice-based narrative&nbsp;experience about two angry female mech pilots at the end of the world, and God. As featured at the Victoria &amp; Albert Museum of Dundee, A.MAZE 2019, Game Devs of Color Expo 2019,&nbsp;and the EGX Rezzed Leftfield Collection.</p>
<p>It is a&nbsp;companion piece to Can Androids Pray: Red, which uses red colors. Both versions&nbsp;can be bought in a bundle for the same price of a single game at <a href="https://itch.io/b/343/can-androids-pray" target="_blank">this link</a>.</p>
<p>WRITTEN BY: Xalavier Nelson Jr. / <a href="https://twitter.com/WritNelson" target="_blank" rel="nofollow noopener">@WritNelson</a><br>DEVELOPED BY: Natalie Clayton / <a href="https://twitter.com/ScarletCatalie" target="_blank" rel="nofollow noopener">@ScarletCatalie</a><br>MUSIC BY: Priscilla Snow / <a href="https://twitter.com/ghoulnoise" target="_blank" rel="nofollow noopener">@ghoulnoise</a></p>
<p>Content warnings for suicide, religious themes, and (military-censored) profanity.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDgucG5n/original/6eJboa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDYucG5n/original/0H0B95.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDcucG5n/original/KApuZ1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDkucG5n/original/vwfK8A.png]]
<p><span style="color: inherit"><strong></strong></span><span style="color: inherit; font-size: inherit">The </span><strong style="color: inherit; font-size: inherit">CanariPack 1BIT TopDown</strong><span style="color: inherit; font-size: inherit"> was meant to help you complete your game with graphics and music in a </span><strong style="color: inherit; font-size: inherit">simple but effective 1BIT style</strong><span style="color: inherit; font-size: inherit">! Whether it's a </span><strong style="color: inherit; font-size: inherit">Zelda-like, a Beat'Em Up, a Shoot'Em Up, a Roguelike or a Racing game</strong><span style="color: inherit; font-size: inherit">!&nbsp;</span></p>
<p>Designed by game developer and expert pixel&nbsp;artist&nbsp;<strong><a href="https://twitter.com/johanvinet" target="_blank" rel="nofollow noopener">Johan Vinet</a></strong>&nbsp;(founder of <a href="https://twitter.com/canarigames" target="_blank" rel="nofollow noopener">Canari Games</a>. Worked on Flinthook, Mercenary Kings Reloaded, Rivals Of Aether, Shovel Knights Showdown...), this very complete pack contains assets made with the greatest care.</p>
<p><img src="https://img.itch.zone/aW1nLzE3MDU5MTgucG5n/original/qojMxJ.png" loading="lazy"><br></p>
<p><strong>FEATURES:</strong><br></p>
<p><strong>A very versatile 16x16 tileset:</strong><br>Inspired by the classics, very versatile, allowing the realization of:</p>
<ul><li>Dungeon / Village / Forest / City / House interiors</li><li><strong>3 GameMaker's rooms</strong> given as examples with <strong>animated tilesets</strong> and <strong>autotiling support</strong>&nbsp;<em>(only&nbsp;for&nbsp;GameMakerStudio2).</em></li></ul>
<p><strong>Players' sprites (16x16):</strong></p>
<ul><li>3 heroes: Princess / Adventurer / Dog</li><li>Fully animated in all 4 directions: Idle / Walk / Push / Jump / Roll / Hurt / Attack / Death</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE3MDY2NzMuZ2lm/original/w1DDv%2F.gif" loading="lazy"><br></p>
<p><strong>Enemies' sprites:</strong></p>
<ul><li>4 enemies: Wizard / Blob / NegaBlob / Snake&nbsp;</li><li>Fully animated in the useful directions</li></ul>
<p><strong>35 items :</strong></p>
<ul><li>Key, sword, bomb, shield, gloves, hammer, chest, coin, pen, bow, mushroom, heart, pot, pot, potion, pick, shovel, bell, bell, boots, compass, feather, diskette, crown, harp, harp, leaf, mirror, gold bag, skull, skull, key, book, lamp, ring, scroll, shell, bananas, bone.</li></ul>
<p><strong>3 chiptune musics (click to listen):</strong></p>
<ul><li><a href="https://soundcloud.com/johanvinet/xbit-adventure?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener">Adventure theme</a> / <a href="https://soundcloud.com/johanvinet/1bit-dark-cave?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener">Dark Cave theme</a> / <a href="https://soundcloud.com/johanvinet/1bit-eerie?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener">Eerie theme</a></li></ul>
<p><strong>17 sound effects:</strong></p>
<ul><li>3 attack / 2 death / 1 fall / 2 hurt / 3 jump / 1 land / 1 pickup / 1 menu-back / 1 menu-valid / 1 menu-cursor.</li></ul>
<p><strong><br>GAMEMAKER STUDIO 2:</strong> In the package you'll found a YYZ file. Just import it in GameMaker Studio 2 and you'll be able to enjoy some fancy features like <strong>Tiles Animations</strong> and <strong>AutoTiling</strong>!</p>
<figure><img src="https://img.itch.zone/aW1nLzE3MDU4NjUuZ2lm/original/eKTTpg.gif" loading="lazy"><span></span></figure>
<p><strong></strong><strong>LICENSE</strong>:&nbsp;
<br><em>You may use these assets in&nbsp;<strong>personal&nbsp;</strong>or&nbsp;<strong>commercial&nbsp;</strong>projects. You may modify these assets to suit your needs.&nbsp;<strong>You can NOT re-distribute the file</strong>, no matter how much you modify it you can use it but&nbsp;<strong>not share or re-sell it</strong>.</em><br></p>
<p><strong>ENJOY!</strong></p>
<p><em><br>ALSO AVAILABLE:&nbsp;</em></p>
<p><iframe frameborder="0" src="https://itch.io/embed/342987?bg_color=FFD02B&amp;fg_color=1b1a25&amp;link_color=e0318a&amp;border_color=FFD02B" width="208" height="167"></iframe><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qID5JWnyIVw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQyOTY1LzE3MDEwMDMucG5n/original/rjpqph.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyOTY1LzE3MDEwMDQucG5n/original/iIukUF.png]]

<p><br></p>
<h2 class="text-center"></h2>
<h2 class="text-center">While doing routine deliveries in a moving city, Postman Maggie and her companion Vale seek out a house that was left behind. Who answers the door of that house was the last person either of them expected...&nbsp;<strong></strong></h2>
<p><br></p>
<hr style="height:2px; color:#611; background-color:#611">
<p><em><strong>Canvas Colors</strong></em> is a slice of life story around the Postman Maggie and her traveling companion: A young girl named Vale. <br></p>
<p class="text-center">&nbsp;- Created for the NaNoRenO 2021 game jam. - <br></p>
<hr style="height:2px; color:#611; background-color:#611">
<p><br></p>
<h2>Characters:</h2>
<p><img src="https://img.itch.zone/aW1nLzU1NjUzMDAucG5n/original/%2BJeqjG.png" loading="lazy"><br><strong>Vale</strong> – A young magician with an interest in flowers. She's quick to shift her attention to whatever shiny new thing interests her.<br></p>
<p><img src="https://img.itch.zone/aW1nLzU1NjUzMTkucG5n/original/YfBF3f.png" loading="lazy"><br><strong>Maggie</strong> – A young woman who works as a postman. Along with delivering mail, her profession also includes maintaining order and upholding the law using her sword. Her pointy ears and her feathery antennae marks her as part of a race called Vanes. <br></p>
<p><br></p>
<h2>Features:</h2>
<ul><li>Game Length: ~1 hour</li><li>Approx. 10k words</li><li>2 endings</li><li>13 CGs</li><li>Original backgrounds and artwork</li><li>Original soundtrack<ul><li>Sound effects used from the public domain</li></ul></li></ul>
<h2>Team:</h2>
<ul><li>BG/CG/Sprite artist – <a href="https://twitter.com/498_ffgghhjj" target="_blank" rel="nofollow noopener">ffgghhjj</a></li><li>"Shrublands" BG artist - CF2</li><li>Writer - Lambic</li><li>Programmer - forgetful</li><li>Music - <a href="https://jamesjmusic.bandcamp.com/" target="_blank" rel="nofollow noopener">James J</a> &amp; Fuel</li><li>Editing - <a href="https://twitter.com/Hoakkun" target="_blank" rel="nofollow noopener">Hoa</a></li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzQuanBn/original/5nYYsV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzUuanBn/original/FvkgWl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzYuanBn/original/wh9o19.jpg]]
<p><strong>Cast Away is a tabletop survival RPG </strong>that&nbsp;invites harrowing stories of resilience to your gaming table. With its rules-light system, you'll be ready to play in minutes, not hours. 'Diminishing&nbsp;Dice' mechanics reflect the ever-worsening condition of survivors in the aftermath of a disaster—without need of Hit Points or burdensome injury tables. Death is permanent,&nbsp;therefore, a Haunting system keeps players engaged long after their characters have passed away. Cast Away contains a modular set of guidelines and is&nbsp;easily adapted to any setting, environment, or circumstance.&nbsp;</p>
<p>Your purchase includes:</p>
<blockquote>- Survivor's Guide<br>- Navigator's Guide<br>- 'Wet Season' Survival Scenario<br>- Printer Friendly&nbsp;Character Sheets<br>- A Donated Community Copy<br>- 3 bonus adventures unlocked via Kickstarter</blockquote>
<p>&nbsp;</p>
<h2>Don't take our word for it:</h2><h2><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/JLggU2QgSWM" frameborder="0" allowfullscreen=""></iframe></div></h2><h2>Print copies available&nbsp;<a href="https://floatingchair.club/products/cast-away" target="_blank" style="font-size: 32px" rel="nofollow noopener">here</a>!</h2>
<p><u></u>With your support, we've been able to make major improvements to our print run:</p>
<p><strong><em>Unlocked</em></strong>&nbsp; -- Additional content &amp; optional mechanics.</p>
<p><strong><em>Unlocked</em></strong>&nbsp;-- Full color print upgrade.</p>
<p><strong><em>Unlocked</em>&nbsp;</strong>-- Free pamphlet adventure PDFs! *</p>
<p><strong><em>Unlocked</em></strong>&nbsp;-- <a href="https://rugose-kohn.itch.io/" target="_blank">Special Guest Artist</a>!<br></p>
<p><strong><em>Unlocked</em>&nbsp;</strong>-- Foil stamped cover upgrade!</p>
<p><br></p>
<h3>* Free adventure pack includes:</h3>
<p><a href="https://afterthought-committee.itch.io/brain-food" target="_blank"><strong>Brain Food</strong></a> - A zombie apocalypse</p>
<p><a href="https://afterthought-committee.itch.io/ground-control" target="_blank"><strong>Ground Control</strong></a> - A space odyssey</p>
<p><a href="https://afterthought-committee.itch.io/cursed-crystal" target="_blank"><strong>Cursed Crystal</strong></a> - A fantasy escape</p>
<p><br></p>
<h3>What do you need to play?</h3>
<p>Cast Away is a tabletop RPG. You'll need: <br> 2+ Players &amp; at least one set of Polyhedral Dice (minus the d20)&nbsp;</p>
<h3><br><u>Credits</u></h3>
<p><strong></strong>Written by Joe O'Brien &amp; Reilly Qyote<br>Layout &amp; Design by Reilly Qyote<br><em>Special Thanks To:&nbsp;</em><br>B, Levimax, Clint, <a href="https://quorumofsand.itch.io/" target="_blank">Matthew K</a>, and <a href="https://rugose-kohn.itch.io/" target="_blank">Rugose Kohn</a><br> for all your support and inspiration.<br><br><br><u><strong>We’d&nbsp;love to hear from you!</strong></u></p>
<p>If you have stories to share, want to give us feedback, or just wanna chat about RPGs, feel free to drop us a line at&nbsp;<a href="mailto:afterthoughtcommittee@gmail.com" style="font-size: inherit" rel="nofollow noopener">afterthoughtcommittee@gmail.com</a>.</p>
<p>Sometimes we make stuff on&nbsp;<a href="https://afterthought-committee.itch.io/" target="_blank">Itch</a>.<br><br>Track us down on <a href="https://discord.gg/d5nh2bHPNP" target="_blank" rel="nofollow noopener">Discord</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/JLggU2QgSWM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzUzMjQ3NjQuanBn/original/O0ft1z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzQ5MTU5OTUuanBn/original/fy5ARw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzQ5MDg5NzcuanBn/original/3%2BMD1J.jpg]]
<p>You wake up in a castle with no memory of who you are or how you got here. The only thing in this room besides you is a weapon, and maybe some armor. Dark creatures are after you, and you must fight them to get your memories back.</p>
<p>This is a single-player TTRPG that uses dice and a deck of Tarot cards. Using random tables and your own intuition to help, you will explore this dark castle and attempt to get your memories back to you by any means necessary. Along the way, you may find helpful NPCs who deal in treasure to assist you.&nbsp; Explore themed zones that are randomly generated by dice and unlock ancient magics to assist you on your quest.&nbsp;In this game, you will:</p>
<ul><li>Recover lost memories in the form of Tarot cards and use them to cast spells</li><li>Fight beasts, monsters, undead, and demons using a simple OSR-like dice system</li><li>Learn about your character as you play the game, starting with no more than your name and fleshing out your backstory as you recover your memories</li><li>Randomly generate a magical castle to explore, with secrets and challenges around every corner</li></ul>
<p>Greatly inspired by the Castlevania video game series, as well as several OSR-style tabletop RPGs such as Mörk Borg and Errant RPG, reclaim your memories and escape the castle!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUwODQyLnBuZw==/original/8QegX3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUwODQzLnBuZw==/original/OcrlK6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUxOTgzLnBuZw==/original/hysztK.png]]
<p>- 150+ Assets to make Controller UI overlays for all platforms
<br>- Casual style<br>- Customizable Buttons and Pads<br>- Also includes Mobile Joysticks<br>- Easy to use</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/IEpjDr-d2us" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDMyLnBuZw==/original/NiHNZq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDMzLnBuZw==/original/hcFVVQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM0LnBuZw==/original/PRSE3v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM1LnBuZw==/original/tQOqRL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM5LnBuZw==/original/evQZGh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDQwLnBuZw==/original/2MDVoZ.png]]
<p>Cat Ace is small aerial combat, arcade shooter.</p>
<p><a href="http://factor13.bandcamp.com/album/cat-ace" target="_blank" rel="nofollow noopener">Get the soundtrack!</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bDLhIQ6bJPc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxODQ5LzEzNzc0OTUucG5n/original/wTtyT8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxODQ5LzEzNzc0OTMucG5n/original/l4pIfP.png]]
<p>
</p><p>Play videos on a glitchy tv in a rainy attic. Supports currently h.264 format.</p><p>CONTROLS</p>
<p>- <strong>Trigger/Interact</strong> - Replay Intro Video<br></p>
<p>- <strong>Grip button</strong> -&nbsp;Open videos folder</p>
<p>- <strong>Joypad right/left</strong> - Next/Previous video<br><br></p>
<p>Video compatibility</p>
<p>- H.264 supported. Other formats might not work. Works best on videos that are downloaded from streaming services using a downloader.<br></p>
<p>This has proven to be the best method to get movies:<br><a href="https://www.reddit.com/r/answers/comments/9qop1v/which_is_the_best_free_youtube_downloader_and/e8b2aei?utm_source=share&amp;utm_medium=web2x" rel="nofollow noopener">https://www.reddit.com/r/answers/comments/9qop1v/which_is_the_best_free_youtube_...</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/3kjjO_hP13E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzMwNTg0MTMucG5n/original/6LvlrS.png]]
<p>Catlandia: Crisis at Fort Pawprint, is a 2D RPG featuring cats! The first game in the Catlandia world, players embark upon a short adventure to reveal and squash a canine threat to the peaceful Cat Kingdom.<br><br>Trout Lake is a vital component in the Cat Kingdom's fish supply lines. But rumours of dogs in the nearby Whisker Woods has forced the Cat Kingdom to establish the outpost of Fort Pawprint to investigate. You are Nugget, a brave Catmando stationed at the fort. Along with your sidekick Sausage, you are charged to sort this whole mess out.</p>
<ul><li><strong>Create a fully customizable cat&nbsp;</strong>by choosing colours, shapes, and patterns</li><li>Collect costume items to&nbsp;<strong>make your cat cuter</strong>&nbsp;— and unlock powerful techniques</li><li><strong>Take your cat into battle</strong>&nbsp;against dogs, pigeons, and other fearsome creatures</li><li>Become friends with other cats of&nbsp;<strong>varying degrees of helpfulness</strong>!</li><li><strong>Take on exciting quests</strong>!</li></ul>
<p>Explore the Whisker Woods and defeat the dogs — for the glory of the Cat Kingdom!<br><br>Catlandia is developed by a small team of independent developers as a passion project. We love cats, and wanted to create an opportunity for you to be a cat yourself. We also think there's an audience for games you don't have to play forever — by design, we created Catlandia as an experience that can be picked up, enjoyed, and finished without a huge investment of time — yet allow it to fit within a larger narrative. We're excited to share this first peak into Catlandia with the Itch community.</p>
<p>This version of Catlandia includes the free Trouble at The Tall House update — a story expansion that lets your cats explore new areas, fight new bosses, and find more costumes!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/nNOuHN7qOHE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTAucG5n/original/ZL8gqT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTEucG5n/original/wABIMh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTUucG5n/original/vX5wNy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTMucG5n/original/Bug%2B5%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTIucG5n/original/9jSHMI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTQucG5n/original/Akez7r.png]]

<p>You play as the cat, in a place created just for you and your friends. You get to go on a nice adventure with them where nothing goes wrong and everything is perfect, as long as your friends stay there, right by your side.</p>
<p>Over the course of the game, you get to explore 120 rooms and discover new abilities like the hookshot and light burst.</p>
<p>A world editor is included.<br></p>
<p></p>
<p><strong>This game contains dark story elements, including strong feelings of abandonment and detachment from reality. This game is not for children.</strong></p>
<p><strong><br></strong></p>
<p><strong>Minimum system requirements:<br></strong></p>
<p><strong>This game only supports 64-bit systems.</strong></p>
<p><strong>OS:</strong> Windows 7, macOS 10.12 Sierra, Ubuntu 16.04<br><strong>Processor:</strong> 6th Generation Intel Core i3<br><strong>Memory:</strong> 400 MB RAM<br><strong>Storage:</strong> 400 MB available space<br><strong>Additional notes:</strong> Memory listed indicates available free memory for the game.<strong></strong><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/jnZr6gtWJjk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzYucG5n/original/0svp8i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzcucG5n/original/oEZ1mH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzgucG5n/original/H4zFs2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzQucG5n/original/ztu0VR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzUucG5n/original/PtZw3%2F.png]]
<p><strong>Cats are Liquid - A Better Place is available now (with more rooms and more abilities), and you should totally check it out by clicking <a href="https://lastquarterstudios.itch.io/cats-are-liquid-a-better-place">here</a>!</strong></p>
<hr>
<p>
Cats are Liquid - A Light in the Shadows is a 2D platformer about a cat with the ability to transform into liquid.<br></p>
<p>
	The game has 90 levels, that are spread across 9 different worlds. It has a minimalistic but colorful style. Along the way the game introduces new mechanics, like flying and summoning bombs to break down walls.
</p>
<p>
	The story is about a cat whose owner locked her in a set of rooms. She desperately wants to get out, but the rooms just keep continuing. Along the way the cat meets a new "friend" and gains new abilities. The story is told through small in game text pieces.</p>
<hr>
<p>
	More info about the game can be found here: 
	<a href="http://catsareliquidgame.tumblr.com/" target="_blank" rel="nofollow noopener">catsareliquidgame.tumblr.com</a>
</p>
<p>
	The latest news about the game can be found on the 
	<a href="http://twitter.com/lastquarterdev" target="_blank" rel="nofollow noopener">@lastquarterdev</a> Twitter feed.
</p>
<hr>
<p>
	<a href="https://twitter.com/search?q=%23CatsAreLiquid" target="_blank" title="#CatsAreLiquid on Twitter" rel="nofollow noopener">#CatsAreLiquid on Twitter</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQxLnBuZw==/original/Ajykbz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQyLnBuZw==/original/5pLsQu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTM5LnBuZw==/original/QMfMbV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQzLnBuZw==/original/Soh0Qg.png]]
<p>Catty &amp; Batty 2: The Spirit Guide is a <strong>casual couch co-op puzzle game</strong>, inspired by Lemmings and Tower Defense!&nbsp;Play as Catty or Batty and build a path to guide spirits home.</p>
<h3>Features:</h3>
<p>🗺️ Campaign with 30 levels for<strong> 1-2 players (local co-op)<br></strong>🖋️ <span></span>Over 800 hand-drawn sprites<br>🎞️ <span></span>Over&nbsp;<span></span>150 animations<br>🕬 &nbsp;Over&nbsp;<span></span>100 new&nbsp;sounds<br>🎼 Original soundtrack<br>🎮 100% Controller support<br>🌈 <span></span>6 color modes&nbsp;(white, sepia, gray, dark, inverted, gameboy)<br>⏱️  About two hours of gameplay<br><strong>✔️ Free steam key if you get it on itch.io! </strong>(Steam key not included in the Palestinian Aid bundle)<strong></strong></p>
<iframe src="https://store.steampowered.com/widget/1483470/" frameborder="0" width="646" height="190"><span class=""></span></iframe>
<h3>Controls:</h3>
<p>⌨️ Keyboard (Player 1):<br></p>
<ul><li>Enter / Left Ctrl: Build Box /&nbsp;Confirm</li><li>X:&nbsp;Remove box&nbsp;/ Cancel</li><li>WASD: Move</li><li>SPACE: Start spirits</li><li>Escape: Open Pause Menu
</li><li>N: Switch characters
</li><li>B: Switch cursor style
</li><li>C: Preview spirit path</li></ul>
<p>⌨️ Keyboard (Player 2):</p>
<ul><li>NumPad Enter / NumPad 0: Build Box /&nbsp;Confirm</li><li>NumPad 1 /&nbsp;NumPad Period:&nbsp;Remove box&nbsp;/ Cancel</li><li>NumPad Arrows: Move</li><li>NumPad 5: Start spirits</li><li>NumPad Plus: Open Pause Menu</li><li>NumPad 9: Switch characters</li><li>NumPad 7: Switch cursor style</li><li>NumPad 3: Preview spirit path</li></ul>
<p>🖱️ Mouse&nbsp;(Player 2):</p>
<ul><li>Left click: Build box / Confirm</li><li>Right click: Remove box&nbsp;/ Cancel</li><li>Middle click:&nbsp;Start spirits</li></ul>
<p>🎮 Controller (Playstation&nbsp;/ Xbox):
</p>
<ul><li>Cross / A: Build Box / Confirm</li><li>Circle / B: Remove box / Cancel</li><li>Left Stick: Move</li><li>Square / X: Start spirits</li><li>Start: Open&nbsp;Pause Menu</li><li>R1&nbsp;/ RB: Switch characters</li><li>L1 / LB: Switch cursor style</li><li>Triangle / Y: Preview spirit path</li></ul>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/uU08TJB_vOQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODQucG5n/original/cGNzIM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODEucG5n/original/ozKFoJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODIucG5n/original/daeQA5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2NzgucG5n/original/G1XAfk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODAucG5n/original/N9ruDX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2NzkucG5n/original/3jAz%2Fd.png]]
<h3>Stardate: 15th April, 2088
</h3>
<p>The starship Equinox is under attack from Stormlord and his robotic minions, the Exolons! You're the crew's only hope. Take your Samurai-1 fighter, find Captain Solomon's Key, clear the decks of evil robots, and save the Equinox from certain destruction!
</p>
<p>Cecconoid is an 8-bit inspired, flick-screen,&nbsp;twin-stick-shooter, set in an alternate dimension where the pixels are still chunky, and the bad guys are black and white. <br></p>
<p> Except for their dangly red bits.<strong>..<br></strong></p>
<h3>Also&nbsp;includes...</h3>
<p> A full, bonus arcade game; <strong>Eugatron!&nbsp;</strong>50 levels of Robotron-style, twin-stick, arena-based shooting, direct from the 80s and remixed for your pleasure. Can you be a <strong>Eugenius?</strong><br></p>
<h2>Features</h2>
<ul><li>50+ Rooms</li><li>6 different power-ups</li><li>High Score Table</li><li>Full, bonus arcade-game, <strong>Eugatron<br></strong></li></ul>
<p>Also available on:</p>
<ul><li> iOS: <a href="https://apps.apple.com/us/app/cecconoid/id1476360841" rel="nofollow noopener">https://apps.apple.com/us/app/cecconoid/id1476360841</a></li><li>Android: <a href="https://play.google.com/store/apps/details?id=com.tdp.cecconoid" rel="nofollow noopener">https://play.google.com/store/apps/details?id=com.tdp.cecconoid</a></li></ul>
<h4>EPILEPSY WARNING</h4>
<p>This game contains flashing images that could potentially trigger seizures for people with photosensitive epilepsy. <strong><em>Like, seriously, the entire game flashes, ALL THE TIME, and there's no option to change it.</em></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lFtRonr1VqM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODEuanBn/original/THPmkR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzYuanBn/original/KK3t9z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzkuanBn/original/gHZjtH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODAuanBn/original/wsOjrW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzcuanBn/original/P0UiHu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODMuanBn/original/LIIjtK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzguanBn/original/3Z0NZ5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODIuanBn/original/qGLpwC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzI2MzEwMDMuanBn/original/nwddM6.jpg]]


<p>At the edge of explored space, your camera will decide the fate of a world.<br></p>
<p>Cellular Harvest: Purple is a shortform first-person photography exploration game. You are an Auditor. An AI embedded in your suit evaluates the value of every being you encounter for the corporate interests that direct humanity's journey into a wider universe.</p>
<p>Track alien creatures. Catalog their existence with your camera. Follow orders. And enjoy an alien planet - while it's still intact.</p>
<p>This game is a companion piece to Cellular Harvest: Green, which takes place during the morning. Both versions&nbsp;can be bought in a bundle for the same price of a single game at&nbsp;<a href="https://itch.io/b/537/cellular-harvest-complete" target="_blank">this link</a>.
</p>
<p>DEVELOPED BY: Nate Berens / <a href="https://twitter.com/ludodrome" rel="nofollow noopener">@ludodrome</a></p>
<p>WRITTEN BY: Xalavier Nelson Jr. / <a href="https://twitter.com/WritNelson" rel="nofollow noopener">@WritNelson</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Usr4KXkPzS8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzOTAucG5n/original/mjM6vY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzODkucG5n/original/F%2BSGJZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzOTEucG5n/original/ItBPH7.png]]

<p>Centuries Outside History is a discord-based oneshot worldbuilding game about space travel, history, and neoliberalism.&nbsp; 2-6 players.<br></p>
<p>It tells the story of a generation ship that is moving from Earth towards a new world, spending centuries in the empty black space between. &nbsp; The people on board have lived their lives being told their stories don't matter- just a liminal existence to enable a future settlement they won't live to see.&nbsp; This game tells their stories, their struggles, and their experiences living in a world where they are denied the experience of history.&nbsp; It's a story about life under neoliberialsm, capitalism, of denied hope and the potential to imagine a better future.<br></p>
<p><br>The game is played using a discord bot- the discord bot feeds story prompts the group uses to build the story of the ship as it engages on its centuries long voyage. The bot serves the purpose that a deck of cards or dice might serve in a more traditional roleplaying game.&nbsp;&nbsp;</p>
<p><br></p>
<p>Play usually takes between 2 and 3 hours. &nbsp;<br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzU1MTYzODIucG5n/original/6CN%2BFI.png]]
<p>Chamber.Repeat(); is a small 2D puzzle game where the level always changes. Just like Andy Warhol's "Campbell Soup's", some elements shift and change while you have to reach the finish over and over again, getting more difficult with more and more chamber elements.</p>
<p><strong>Movement:</strong></p>
<ul><li>WASD - Movement</li><li>E - Use</li><li>Q - Retry Chamber</li><li>ESC - Quit</li><li>Mouse to aim</li><li>LMB - Shoot energy bullet</li></ul>
<p>Made by Laura Heimann for the Paint Jam 2021. All graphics (besides the games logo) were created in MSPaint and exported to Pyxel&nbsp;Edit to add&nbsp;transparency. The gamejam theme was&nbsp;"Campbell Soup (Andy Warhol)".</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTcxLnBuZw==/original/RJQWI%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTczLnBuZw==/original/k0yow%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTc1LnBuZw==/original/64zZaa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTc2LnBuZw==/original/Ps28U2.png]]
<p><em>Chasing the Ace</em> is a GMless, card-based storytelling game of mecha drama. In it, players take on the role of a mecha squadron lead by the legendary Ace. The Ace has led your squadron out of deadly situations more times than you can count. Together you've saved thousands of lives over the course of the war you find yourselves in. But the Ace has confided in you a secret: at midnight tonight, they are going to steal their mecha. They have not told you why, but they have asked you to join them. With you, they say, they stand a chance. You have until midnight to decide.&nbsp;</p>
<p>Failure risks execution for treason. But do you even want to help them?</p>
<p><em>Chasing the Ace</em> is a Descended From the Queen&nbsp;game for 3-5 players. To play it, you just need a deck of regular&nbsp; playing cards and this book. It is a game of interpersonal drama set amidst a war between a paramilitary organization, its mecha pilots, and monstrous beings that threaten the world. Together, you will define the war, the Ace, and your characters over the course of play, until you are finally faced with your decision.&nbsp;Each session takes around an hour to play.&nbsp;<br></p>
<p>Check out the demo file below, which lays out the full rules and setting premise.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjUucG5n/original/4I9tGs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjYucG5n/original/Bc7rY6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjcucG5n/original/Nb%2BloH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3Mzk5NDUucG5n/original/zXolqa.png]]
<p>This is just a quickly made game that was done as a university class project. It was made in just 1 month, so there are probably bugs!&nbsp;</p>
<p>The game generally plays like chess, but it's mixed with a handful of aspects from Dungeons &amp; Dragons 5e. Which is to say, it's a watered-down version of any other SRPG.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzU5ODczMjYucG5n/original/BJfmwP.png]]

<p><strong>Choice Chamber</strong> is a&nbsp;crowd-sourced action game designed for livestreaming where viewers play along via the chat to change the game in realtime as you play. Players constantly give feedback that changes how the game evolves, from power ups and enemies to obstacles and rule changes. The game world is procedurally generated based on viewer input, wildly changing the difficulty and surprises each time you play.</p>
<p><strong>NOTE:</strong> This game is meant to be broadcast on Twitch. You only need 1 viewer to get the proper experience, but the more the merrier. You can also play in Offline Mode, where you don't need to broadcast at all.</p>
<ul><li>Easily connect to your Twitch channel to get viewers playing along!</li><li>Works with any number of players, from 1 to infinity (there's also an offline mode)</li><li>2-Player local co-op (both online and offline modes)</li><li>Unlockable weapons, powers, characters, secrets! o.o</li><li>Full Controller support (co-op included)</li><li>Music by Jukio Kallio, musician for other indie games like Nuclear Throne, Luftrausers, and&nbsp;<a href="http://kozilek.bandcamp.com/" target="_blank" rel="nofollow noopener">many other things</a>!</li><li>The only game to be&nbsp;<a href="http://www.engadget.com/2014/04/16/twitch-funds-chat-driven-game-choice-chamber/" target="_blank" rel="nofollow noopener">funded</a>&nbsp;by Twitch!</li><li>Over a million players already!*</li></ul>
<p>* player count is a rough estimate of both streamers and chatters<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pbjHcqxEu_U" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk2LnBuZw==/original/dHnMb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk3LnBuZw==/original/mnud9L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk4LnBuZw==/original/YSCkNI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk1LnBuZw==/original/w0bxPG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk5LnBuZw==/original/xdjPWj.png]]
<p style="font-size:24px">
	<span style="font-size:36px">Circa Infinity is a brain-melting circular platformer by Kenny Sun, with a pulse-pounding soundtrack by Jack + Jim Fay.</span>
</p>
<p style="font-size:18px">
	<strong>If you purchase this game on itch.io you will also receive a Steam Key.</strong>
</p>
<p style="font-size:18px">
	Play the <a href="http://kennysun.itch.io/circa-infinity-demo">free demo</a> to try it out!
</p>
<p>The game will be available on September 9th, 2015. If you have any questions, you can contact me through 
	<a href="mailto:mailto:kenny@kennysun.com" rel="nofollow noopener">E-mail</a> or <a href="https://twitter.com/KennyYSun" rel="nofollow noopener">Twitter</a>.
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/c9WL2qXl1tU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjUzLmdpZg==/original/ZiWKGp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU2LmdpZg==/original/m2ynYF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU1LmdpZg==/original/qkXyPZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU0LmdpZg==/original/VEevQA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU3LmdpZg==/original/7VbEu3.gif]]
<div class="custom-video-link">
  <iframe src="https://www.youtube.com/embed/QFzSY1LcY04?showinfo=0&amp;rel=0" allowfullscreen="" width="600" height="338" frameborder="0"></iframe>
</div>
<div class="custom-store-links">
  <a href="https://itunes.apple.com/us/app/cityglitch/id1246886857" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU1OTM3MDQucG5n/original/Mxw1iE.png" alt="Apple app store" width="200" loading="lazy"></a>
  <a href="https://play.google.com/store/apps/details?id=com.mindfungus.cityglitch" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU1OTM3MjAucG5n/original/BBm1Dh.png" alt="Google play store" width="200" loading="lazy"></a>
</div>
<p><iframe src="https://streamable.com/e/u3uykc?autoplay=1&amp;nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
  fly to haunted cities<br>
  land on rooftop puzzles<br>
  click to move across tiles<br>
</p>
<p><iframe src="https://streamable.com/e/rz69ic?autoplay=1&amp;nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
  bewitch cats<br>
  dodge arrows<br>
  avoid city spooks<br>
  and dark things that skitter<br>
</p>
<p><iframe src="https://streamable.com/e/7mraxx?autoplay=1&amp;nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
  touch runes to illuminate them<br>
  light them all to complete the ritual<br>
  release the glitch<br>
</p>
<p><iframe src="https://streamable.com/e/oisutu?autoplay=1&amp;nocontrols=1" allowfullscreen="" width="560" height="314" frameborder="0"></iframe></p>
<table>
<tbody><tr>
  <td>
    <span class="custom-bold">features:</span><br>
    95 tricky levels<br>
    7 glowing cities<br>
    7 boss puzzles<br>
    3 spooky achievements<br>
    wyrd atmospheric music<br>
    vibrant pixels<br>
    glitchy shaders<br>
  </td>
  <td>
    <span class="custom-bold">a game by:</span><br><a href="http://twitter.com/snowkittykira" rel="nofollow noopener">Kira Boom</a><br>
    <a href="http://twitter.com/ni_mu_no" rel="nofollow noopener">Nicolas Munoz</a><br>
    <a href="http://twitter.com/prockwell" rel="nofollow noopener">Peter Rockwell</a><br>
    <a href="http://twitter.com/bhane" rel="nofollow noopener">Cody Walker</a><br>
  </td>
</tr>
</tbody></table>
<p><img src="https://img.itch.zone/aW1nLzU1OTQwNjMucG5n/original/IwkiTH.png" loading="lazy"></p>
<p>
  based on our ludum dare 36 entry<br>
  mobile versions available on <a href="https://itunes.apple.com/us/app/cityglitch/id1246886857" rel="nofollow noopener">iOS</a> and <a href="http://play.google.com/store/apps/details?id=com.mindfungus.cityglitch" rel="nofollow noopener">Android</a><br>
  original soundtrack available <a href="https://nimuno.bandcamp.com/album/cityglitch" rel="nofollow noopener">here</a><br>
  more info on our <a href="http://mindfungus.com/press/sheet.php?p=cityglitch" rel="nofollow noopener">press kit</a><br>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/QFzSY1LcY04?showinfo=0&rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTU2NTIyLzczOTI0MS5naWY=/original/WgYwI%2F.gif]]
<p><em>Cleansuit</em>&nbsp;is a retro-style graphical text adventure game where you must find creative ways to survive a mysterious serial killer's assault on your home. Use text commands to manipulate the detailed environment and discover all the unique ways to win and die.<br><br>Become the schlubby protagonist who must outwit his would-be killer: Explore your home, collect items to devise a path to survival, and cheat death. Along the way you'll find secrets hidden through your house. Some may help you. Most are lethal.<br><br>What will you need to make it out alive? Bring your ingenuity, your curiosity, and most of all your will to live!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/9DbJcSUjqEo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Mi5wbmc=/original/rl35yj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0NC5wbmc=/original/RgjiP5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Ni5wbmc=/original/99uiLE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Ny5wbmc=/original/G5maDg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0OC5wbmc=/original/zD5WOT.png]]
<p>This is your year. The seniors may have said that last year, but they had no idea&nbsp;what they were talking about. This year, this team, right here, you’re going to&nbsp;make it. You’re going to League Finals, then States, then Regionals! And you’re&nbsp;winning it all.</p>
<p>Build your high school persona and work through the drama of the football season and the town around you.</p>
<p><em><strong>Clear Eyes / Full Hearts </strong></em><em>is a&nbsp;GM-less TTRPG for 2-6 players. </em><em>Co-created by Eric Silver and Mischa Stanton</em></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNjIucG5n/original/lxLbWT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNTkucG5n/original/ad8kNv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNTgucG5n/original/MT%2BjRL.png]]

<p class="text-justify"><strong>CLOSED HANDS</strong> is a groundbreaking work of interactive fiction by <a href="http://passenger-games.com/" rel="nofollow noopener">PASSENGER</a>, directed by <a href="https://danhett.com/" rel="nofollow noopener">Dan&nbsp;Hett</a>. The game follows the deep intertwined stories of five people thrown together by their involvement in a fictional terror attack.</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/vx5Pb09pfmw" frameborder="0" allowfullscreen=""></iframe></div>
<p>The game plays out through a combination of traditional interactive text, as well as explorable computer interfaces, conversations, IM's, phonecalls and more. CLOSED HANDS is a fragmented and complex narrative, playable in any order, that tells the story of the lead-up and aftermath of the attack:&nbsp;some stories go forward in time, some backwards, and some both. Players can choose to follow a single narrative arc, or jump between perspectives to get the full picture of everything that happens to the city, and it's inhabitants.</p>
<p class="text-justify"><strong>Game features:</strong></p>
<ul class="text-justify"><li class="text-justify">A rich, deep work of interactive fiction - 130,000+ words across almost 150 scenes written by <a href="http://danhett.com" rel="nofollow noopener">Dan Hett</a>, <a href="https://www.danwhitehead.net/" rel="nofollow noopener">Dan Whitehead</a>, <a href="https://www.sharandhaliwal.com/" rel="nofollow noopener">Sharan Dhaliwal</a> and <a href="https://twitter.com/umarditta" rel="nofollow noopener">Umar Ditta</a></li><li class="text-justify">Five distinct intertwining character arcs, and dozens of additional scenes to fill out the full story.&nbsp; Follow a single character, or move between them to understand the full picture.</li><li class="text-justify">Nine possible endings to the game, with non-linear progression to get there. Discover everything by experimenting with key character decisions.</li><li>Features a&nbsp;dynamic ambient soundtrack by Ciaran McAuley (<a href="https://rumasound.bandcamp.com/" rel="nofollow noopener">RUMA</a>) that reacts to tension and events within the game as it unfolds</li><li class="text-justify">Game theme music composed and performed by Paul Wolinski (<a href="https://65daysofstatic.com/" rel="nofollow noopener">65daysofstatic</a>, <a href="https://www.nomanssky.com/" rel="nofollow noopener">No Man's Sky</a>)</li></ul>
<p>CLOSED HANDS is proudly supported by Arts Council England, and is free to download forever. However, if you wish to support PASSENGER and our future work, please consider buying a copy!&nbsp;Thanks for playing.&nbsp;</p>
<p><img src="https://img.itch.zone/aW1nLzU1MDUxMjcucG5n/original/7t2TQ%2B.png" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vx5Pb09pfmw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDEucG5n/original/w7BvJ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0ODYuanBn/original/ugEdz6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTc4NTEucG5n/original/%2BOiput.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0NjAuanBn/original/tox32v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDIucG5n/original/3OHjfB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0ODEuanBn/original/5lDILz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDQucG5n/original/WpQfPf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0NjYuanBn/original/deV6qj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDMucG5n/original/HypsY%2F.png]]
<p>An easy-to-learn puzzle game where you can't stop moving. Collect all the orbs and get to the exit without crashing into anything. Wrap around the map to get to hard-to-reach locations and discover new challenges in each zone.<br></p>
<p>60 levels spread over 6 different zones.</p>
<p><a href="http://tricksygoblin.com/games/cloud-serpent/" target="_blank" rel="nofollow noopener">Play Demo in Browser</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDYuZ2lm/original/HFtOnM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDguanBn/original/e07S9W.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDkuanBn/original/V3nhnR.jpg]]

<p>
if you look up&nbsp;as the rain stops in hopes to catch a leaf that tore the storm apart, you're canon, and this sound is for you. a shard, a crack in the voice of fate, a low.<br></p>
<p>in this report is</p>
<ul><li>9 places to look</li><li>a 🍁20 pressure system of cells, wants and WTFs</li><li>a quickstarter spread hardboiling the game into one impossible moment</li><li>an emoji-based gear list unlocking&nbsp;the Prediction Leaf and other hidden finds</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ1MDE1MzQucG5n/original/Df9A8N.png" loading="lazy"></p>
<p>cloudshear is a remix of <a href="https://johnbattle.itch.io/songbird">Songbirds</a> by <a href="https://johnbattle.itch.io/">Batts</a>. please support the official release!</p>
<p></p>
<p><em>changelog<br></em><a href="https://shwac.itch.io/f09f8cb3/devlog/204854/v2052-sun-turn-update">v.20.52</a>&nbsp;<em>divergence.<br>getting specific.<br>graffiti.</em><br><em>v.20.51 pinned a whirligig to the character sheet.</em><br><em>clarified quick start.</em></p>
<p><em>v.20.50</em><br></p>
<p><sub>made proudly in LibreOffice</sub><sub></sub><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzQ3NzUxMjYucG5n/original/mWheO%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzQ3NzUxMjAucG5n/original/VUZpOh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzQ4MjczMzEucG5n/original/smQIx0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzQ4MjczMjcucG5n/original/hPpF9W.png]]
<p>Clover Sans is a&nbsp;low-res pixel font designed for an old video game I was planning that never got off the ground.&nbsp;Even if that never happened,&nbsp;I'm still&nbsp;<em>really</em> happy with how the font came out, so&nbsp;I'd be more than happy for others to use it! The $ and @ symbols were specially designed for the game, so they don't look very standard.</p>
<p>License is&nbsp;<strong><a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="nofollow noopener">CC-BY-NC 4.0</a></strong>. You <strong>may</strong> use this in commercial products, but please don't re-sell the font itself.&nbsp;I'd love to see anything you use this in, so feel free to promo them in the comments here!</p>
<p>This font was created using <a href="https://fontstruct.com" rel="nofollow noopener">FontStruct</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3OTI0LzM3ODg3ODMucG5n/original/e3OBMA.png]]
<p><strong><em>Dying is Easy. Comedy is Hard.&nbsp;
</em></strong></p>
<p>Clowns. We've all seen them... riding their unicycles, blowing up balloons at parties, piling in garish hordes from tiny cars, waddling around in bulbous red shoes, passed out in a dumpster stinking of booze and regret. For what do these martyrs of mirth sacrifice themselves? The answer is they do it for us. Not just to fill our need for laughter and merriment, but because they defy the doom of mankind! <strong><em>Clowns</em></strong> are man's only salvation against… <strong><em>Vampires</em></strong>.</p>
<p>You've seen Vampires too; you just didn't know it. Maybe they were killing the mood at a party, ruining a great punchline, layering red tape onto a business, or just plain old-fashioned sucking the blood from the living. Contrary to myth they do much of this in broad daylight, their only fear of the sun being that it might expose them to mockery. They drain humor from the world because they fear someone might dare to laugh at them. <em>You know the type.</em></p>
<p>Vampires are right to be afraid, as their immortality depends on their dignity. Clowns must destroy a Vampire in a hilarious way for it to stick. This war has gone on for ages, and unfortunately the old gags like garlic and crosses barely get a chuckle nowadays.&nbsp; Sure, folks thought being impaled on a stake with a brick in your mouth was the acme of comedy once, but today's Clown plays for a tough crowd. Fortunately, Vampires fall into the “<em>Straight man</em>” role so eagerly that it isn't impossible to set up a killer gag.</p>
<p>… and do it you must, or the world will be drained of everything that makes it worth living. Ridding the world of life-sucking undead is your sacred duty as a member of <strong><em>Clown Helsing</em></strong>!</p>
<p>This book includes all you need to play; how to make characters, how to resolve the results of actions, and guidance for setting up games and encounters!</p>
<p>Softcover Print-On-Demand available <a href="https://www.drivethrurpg.com/product/305896/Clown-Helsing?affiliate_id=490690" rel="nofollow noopener">here</a>.<br></p>
<p>Cheat Sheets for players and 3x5 print labels for clown cards also available for download below.</p>
<p>As a side note, the game <a href="https://tetra-saturn.itch.io/clowntime" target="_blank">ClownTime</a> by Tetra Saturn  works perfectly when played between games of Clown Helsing. Check that out too!<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgxNTkuanBn/original/UAPwzE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzMzcuanBn/original/ipo3uC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzNDEuanBn/original/2ObGch.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzNDcuanBn/original/E8%2BuQx.jpg]]
<p><span class=""><em>COBWEBS</em></span> is a 1-5 player GM-less RPG that tells stories of reluctant investigators uncovering terrifying conspiracies and getting far more than they bargained for. &nbsp;It combines elements of noir, horror, and science fiction to create a uniquely haunting mystery built collaboratively. If you enjoy podcasts like <em><span class="">Limetown</span></em> and <em><span class="">Tanis</span></em>, comics like <span class=""><em>Mind MGMT</em></span>, or movies like <span class=""><em>Under The Silver Lake</em></span> and <em><span class="">Mute</span></em>-you're in the right place.&nbsp;</p>
<p>This game builds upon mechanics you know from games you already enjoy such as <span class=""><em>Lovecraftesque</em>,</span> <span class=""><em>Blades in the Dark</em>,</span> and <span class=""><em>The Hour Between Dog &amp; Wolf</em></span> while simultaneously bringing a new and novel experience to your table.&nbsp;</p>
<p>Cobwebs is designed by Adam Vass of <a href="http://www.worldchampgame.co/" target="_blank" rel="nofollow noopener">World Champ Game Co.</a> illustrated by <a href="https://srcantirino.carbonmade.com/" target="_blank" rel="nofollow noopener">Sally Cantirino</a>, and published by <a href="http://www.exaltedfuneral.com/" target="_blank" rel="nofollow noopener">Exalted Funeral</a>.&nbsp; <br></p>
<p><img src="https://img.itch.zone/aW1nLzM1NTMyMTcucG5n/original/H1Ys8k.png" loading="lazy"><br></p>
<p><span class=""><em>Cobwebs</em></span> works best with a group three players but comfortably supports one to five. Over the course of your game, each player takes turns inhabiting one of three shared roles:</p>
<ul><li>&nbsp;<span class=""><strong>The Darling</strong></span> - our lone investigator. This person is far outside of their realm of comfort, but when a loved one goes missing and those tasked with finding them fail, they are resolved to take things into their own hands.</li><li>&nbsp;<strong><span class="">The Shadow</span> </strong>- an ensemble of friendly, suspicious, or dangerous characters who our Darling interacts with during their investigation. Some will help, others will hinder, but each one brings our investigator closer to peril.</li><li>&nbsp;<strong><span class="">The Machine</span></strong> - the outsider tasked with assembling scenes, describing locations, and ramping up tension as danger draws near. </li></ul>
<p>Each role has particular goals and randomized contextual setups in each scene as determined by dice rolls interacting with a beautiful cloth die-drop playmat. </p>
<p>Each player shapes the mystery in secretive ways, adapting and projecting various theories as you progress. The final result is the sum of the collective’s contributions to the story, and still a conclusion that no one person could have anticipated.</p>
<p><br><img src="https://img.itch.zone/aW1nLzM1NTMyMjgucG5n/original/4%2FT5sM.png" loading="lazy"><br></p>
<p>The digital edition of <em>COBWEBS</em> includes the following:<br></p>
<ul><li>Complete rule book, including 10 quickstart scenarios by a cast of amazing guest contributors<em>: </em><span class=""><a href="https://cone.itch.io/">Cecil Howe</a>, <a href="https://bananachan.itch.io/">Banana Chan</a>, Austin Knight, <a href="https://fm-geist.itch.io/">Fiona Maeve Geist</a>, <a href="https://ndpdesign.com/" rel="nofollow noopener">Nathan D. Paoletta</a>, <a href="http://a-sputnik.itch.io/">Suzanne Schenewerk</a>, <a href="http://lindahcodega.com/" rel="nofollow noopener">Linda H Codega,</a> <a href="https://temporalhiccup.itch.io/">Jamila R. Nedjadi</a>, and <a href="https://fractal-dragon.itch.io/">Alex Guerrero</a>. </span></li><li><em>Machine Automatica</em>: an additional variant rules document for playing with 1-2 players developed by <a href="https://www.floatingchair.club" rel="nofollow noopener">Samuel Mendez</a>.</li><li>Printable playmat for in-person play, you supply your own dice, tokens, and notecards.</li><li>Printable rules reference cards for easier play.</li><li>Digital assets of playmats, dice, and tokens for online play in your preferred platform.</li><li>Access to a Google Slides project ready for online play, including die dropping and note taking, designed by <a href="https://adamebell.itch.io/">Adam Bell</a></li></ul>
<p>If you're interested in the physical edition which includes custom dice, tokens, and a screen printed cloth playmat, visit <a href="https://www.worldchamp.io/store" rel="nofollow noopener">worldchamp.io/store</a> or <a href="https://www.exaltedfuneral.com" rel="nofollow noopener">exaltedfuneral.com</a><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNjgucG5n/original/%2BB7l8w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxODMucG5n/original/9DX5%2Fc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNjkucG5n/original/nZZvez.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxODQucG5n/original/Vz0dpt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNzAucG5n/original/p6q1gZ.png]]
<p>Hey,</p>
<p>You can<strong> get Code Dungeon&nbsp;for FREE </strong>if you sign up to the newsletter for my next game!</p>
<p><a href="https://www.monstersofthenorth.com/#/signup" target="_blank" rel="nofollow noopener">Newsletter Signup</a></p>
<p>Code Dungeon is a short atmospheric dungeon crawler hack-n-slash game where you fight your way up a tower through hordes of enemies.<br></p>
<p>The game saves your progress every time you ascend a floor. There are 4 floors.</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/VMTn1bqiBRw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjIucG5n/original/KhSpQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjQucG5n/original/HEH6YM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjMucG5n/original/sYhZsD.png]]
<p><strong>**UPDATE** Mac &amp; PC Builds now have translated text in Spanish, French, German and the original English!</strong></p><p>Codemancer brings the <strong>mystery of magic</strong> and the <strong>exhilaration of learning to code</strong> together in a fantasy universe that uses spell casting as a way to teach and learn programming skills. Codemancer’s fantasy universe is filled with rival sorcerers and their minions for players to encounter along their journey. Codemancer is a non-violent, entertaining, and educational game designed to be <strong>inclusive and accessible</strong> to learners at any stage. Features include a gender-neutral fantasy setting with a female protagonist, a narrative backbone, and a programming interface that’s designed to be easy to understand by kids with varying degrees of skill and experience. Codemancer breaks down barriers that may have discouraged some kids from embracing technology and <strong>elevates their screentime</strong> to be more productive <em>and</em> entertaining.&nbsp; It isn’t a typical coding or technology game.</p>
<p><strong>WHAT IS CODEMANCER ALL ABOUT?</strong>&nbsp;&nbsp;&nbsp;</p>
<p>Codemancer tells a moving story about Aurora, a young, creatively talented girl who’s trying to grow up, become independent, and do good in the world in the face of incredible obstacles when her <strong>father is suddenly kidnapped</strong>. Aurora has to embark on an adventure to save him as she grows into a gracious and independent young woman. She must learn magic spells to save her father, but the <strong>magic used in Aurora’s world works the same as programming does in ours</strong>. Inspire children to explore their potential as they discover the magic of coding.</p>
<p><strong>CODEMANCER IS AN EDUCATIONAL GAMING ADVENTURE:</strong>&nbsp;&nbsp;&nbsp;</p>
<ul><li>Codemancer is designed for <strong>6 to 12 year olds</strong> as an educational game that teaches the magic behind coding—and can be fun for grownups, too!</li></ul>
<p><strong>CODEMANCER SPECIFICALLY TEACHES:</strong></p>
<ul><li>Sequential Algorithms</li><li>Debugging</li><li>Function Arguments</li><li>Scope</li><li>Looping Constructs</li><li>Concurrent Programming</li></ul>
<p><strong>...AND TEACHES IN GENERAL:</strong></p>
<ul><li>Computational Thinking</li><li>Planning</li><li>Problem Solving</li><li>Resilience
</li></ul>
<p><strong>CODEMANCER FEATURES:</strong></p>
<ul><li>A narrative inspired by popular works of young adult fantasy worlds such as Harry Potter, Percy Jackson, The Neverending Story, The Last Airbender, and many more!</li><li>Gameplay that takes place in a hexagonal world, making it easy to estimate distances and angles by eye.&nbsp;</li><li>'Freeze time' ability, so players can debug the programs they've written and potentially code their way out of a jam to learn from their mistakes.</li><li>Availability for PC, Mac, iPad, and Android tablets.</li></ul>
<p><strong>CODEMANCER IS STRUCTURED FOR ACCESSIBILITY AND INCLUSIVITY:</strong>&nbsp;&nbsp;&nbsp;</p>
<ul><li>The goal of Codemancer is to be as broadly <strong>inclusive as possible</strong> by creating a gender-neutral fantasy setting with a female protagonist, a narrative backbone, and language interface that’s designed to make the game appeal to kids at different skill levels.&nbsp;</li><li>Codemancer breaks down barriers that can hinder some kids from feeling comfortable with engaging with programming, for example Codemancer <strong>uses pips (like on a die) instead of numerals</strong>, and sets the gameplay in a hexagonal world that makes it easy to estimate distances and angles by eye.&nbsp;</li><li>No syntax errors -- if you can enter a spell, it will run. Syntax errors can be frustrating and cause learners to quit before they really begin.</li><li>Codemancer uses an <strong>open dyslexic font</strong>, where letters are designed to look distinctly different from each other to make reading easier for kids with dyslexia.</li><li>The game is fully voiced, so <strong>reading is completely optional</strong>.</li><li>Codemancer's programming language is designed to be accessible, but also translates easily to a variety of popular real-world programming languages (such as Python).</li><li>Codemancer appeals to many educational groups, from children with special needs for reading, to younger children new to coding, to older children with more advanced coding and programming skill sets.&nbsp;</li><li>Codemancer has the potential to reach under-represented groups in coding and teach them an often-exclusionary, but nonetheless important, 20th-century skill.</li></ul>
<p></p>
<p></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/3DZ26MpKIzA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDIucG5n/original/hX7nmN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyMzkucG5n/original/DYTBUf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDAucG5n/original/FoAcCA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDgucG5n/original/jYmWiA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDMucG5n/original/9WBvGm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDQucG5n/original/gQRRvJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDYucG5n/original/6YdoPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDUucG5n/original/PP8cDJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDkucG5n/original/qDkCQS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDEucG5n/original/k7IPmr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDcucG5n/original/mOH1%2Be.png]]
<p><strong style="color:#ffff00">Color Jumper</strong> is an abstract, color-based puzzle platformer which focuses on fast, precise movement to navigate your surroundings. Inspired by hardcore platformers like <strong>Super Meat Boy, Downwell, VVVVVV,</strong> and many others, your goal in <strong style="color:#ffff00">Color Jumper</strong> is to reach the exit.</p>
<p>You control a block with a different color on each side. Colored platforms are only solid when in contact with the connecting color of your block. Each jump rotates your block, creating a world where each jump must be planned carefully, turning levels into a twisting high-speed parkour race to the finish.<br></p>
<p><img src="https://img.itch.zone/aW1nLzEzNzg4MDQuZ2lm/original/WTVUZb.gif" loading="lazy"></p>
<h2>Featuring</h2>
<ul><li>Fully integrated colorblind mode
</li><li>Dedicated speedrun mode
</li><li>Incredibly tight and responsive controls
</li><li>Blisteringly fast gameplay
</li><li>Over 100 levels to conquer
</li><li>Four unique and challenging boss fights
</li><li>Collectibles which unlock additional extreme challenge levels
</li><li>Time and rotation goals for each level, a completionist's dream! (or nightmare?)</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzEzNzg4MDUuZ2lm/original/NuV1Fy.gif" loading="lazy"><br></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/B50OqGhAsI8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg3OTgucG5n/original/%2Fx9XuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg3OTkucG5n/original/DXR%2Fps.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDAucG5n/original/lg7RV7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDEucG5n/original/OEMCcB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDIucG5n/original/1l3JRA.png]]
<p>Returning home as the descendant of a long-deposed leader, you explore what has become of your family's old domain. Though the scars of your ancestors' influence remain, the community has turned away from the past toward a hopeful future.<br></p>
<ul><li>Explore your rebuilt homeland&nbsp;above the clouds by climbing almost any surface and effortlessly gliding through the air</li><li>Listen to the stories of the folks who remain here and how they have recovered and restored their society</li><li>Visit the sites of the neglected pilgrimage of a long-forgotten faith</li><li>Discover the secrets of a recovering populace and the strength of a community</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzNDQuZ2lm/original/mVUl21.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzMzMucG5n/original/74v2Rx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzMzQucG5n/original/l95zZH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzNTUucG5n/original/tG%2Fjon.png]]

<p>Compromise//Empire is a GMless roleplaying game for 2-3 players about forming temporary alliances and resisting empire.</p>
<p>Each player takes the role of a faction forced into an unlikely alliance. You must represent your agenda&nbsp;while making compromises to&nbsp;fight against the forces of empire.</p>
<p><strong>Premise</strong></p>
<p>The forces of the Empire, the forces of totalitarianism and exploitation, are invading. They have secured a foothold, and want complete control. Their soldiers trample the land, their spies and diplomats are in your places of power, time is limited.</p>
<p>You represent a faction. One of the factions who are working to resist the Empire. As a representative you must extend a hand and form whatever alliances you can with the other factions at play. Resisting the Empire will cost you, and your faction. Compromises must be made.</p>
<p>What cost will you pay to resist the Empire?</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTIucG5n/original/Tnsd1X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTEucG5n/original/0V%2FTkg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTAucG5n/original/kCtYNd.png]]

<p>
	 Basically a twin stick shooter, with some weapon options and different enemies. It gets harder and harder until you die, so there is no end goal except getting higher scores. (and unlocking the last gun- currently ricochet gun) <br>
	<br>
	Why "concave" in the name? Because I am trying lots of different difficulty curve functions with most of them being concave. <span></span>
</p><p>
	<br>
</p><p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/c-r68_8Mizo" frameborder="0" allowfullscreen=""></iframe>
</p><p>
	<br>
</p><p>
	<strong><u>Instructions</u></strong>
</p><p>
	<strong><br>
	</strong>
</p><p>
	<strong>Basic</strong>
</p><p>
	WASD to move<br>
	Mouse Wheel or 1-2-3-4-5 to change weapons.<br>
	Left click to shoot, right click to teleport to mouse's location.
</p><p>
	<strong>Goal</strong>
</p><p>
	You cant win this game. But maybe unlocking the last weapon -currently ricochet gun- is a good target to reach. You will hear a pickup sound when you unlock a new weapon by killing enemies. The enemies gets a bit faster and more numerous with each enemy you kill, so surviving until eternity is not possible.
</p><p>
	Difficulty and weapon unlocks only got updated with the enemies you kill, not by environmental hazards (e.g explosions). With that in mind, try to increase your high score.
</p><p>
	Current highscore is 25000, from my friend Nactuam. Let me know if you can beat him.
</p><p>
	<strong>Weapons</strong>
</p><p>
	The only interesting weapon is sword when it comes to usage. Ever played fruit ninja on mobile? Sword works exactly like that. Click and drag to swing. You cant swing all day long, so release after a while. The harder you swing, the bigger your swing's trail will be.
</p><p>
	Shotgun is a low range weapon. It is an old shotgun, so it is heavy.
</p><p>
	Machine gun is a conventional gun, that lets you take full control of topdown shooting mechanisms.
</p><p>
	Plasma gun has piercing ammo. But the weapon itself is really heavy.
</p><p>
	Ricochet bullets can kill you. Be careful.
</p><p>
	<strong>Credits</strong>
</p><p>
	Art: Me &amp; Seyacim
</p><p>
	Programming: Me
</p><p>
	Music: <a href="https://itch.io/profile/replaytion" target="_blank">Replay</a><span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/c-r68_8Mizo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjUxLmdpZg==/original/MGEeJV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjM1LmdpZg==/original/Y5wm%2BY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjU3LmdpZg==/original/TOa2es.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ4NTcwLnBuZw==/original/I5jvnR.png]]
<h1 class="text-center"><strong>Concentric</strong> is a minimalist action game about gracefully moving in circles.</h1>
<h2 class="text-center">Navigate along a set of concentric rings and bring energy back to your core.&nbsp;</h2>
<h2 class="text-center">Retrieve energy. Evade traps. Play fast and take risks for a better score. Carve a perfect path through the level and rise the ranks of the global leaderboards.</h2>
<div class=""><iframe style="width: 923px; height: 518px" src="https://www.youtube.com/embed/MYvgBxWGpqs?&amp;autoplay=0&amp;loop=1&amp;rel=0&amp;showinfo=0&amp;fs=0&amp;controls=0&amp;color=white&amp;iv_load_policy=3&amp;playlist=MYvgBxWGpqs&amp;modestbranding=1" frameborder="0" allowfullscreen="0">&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id=&quot;selection-marker-1&quot; class=&quot;redactor-selection-marker&quot;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</iframe></div>
<p><strong><img src="https://img.itch.zone/aW1nLzk5NDk5Mi5wbmc=/original/5cMlcY.png" loading="lazy"><br></strong></p>
<figure><strong><img src="https://img.itch.zone/aW1nLzk5NDI5Ni5wbmc=/original/ihO6g3.png" loading="lazy"></strong></figure>
<p><img src="https://img.itch.zone/aW1nLzk5NDk5My5wbmc=/original/Uy1HYE.png" loading="lazy"><br></p>
<h2 class="text-center"></h2>
<h2 class="text-center">•••••</h2>
<h3 class="text-center">• Time-attack style gameplay •</h3>
<h3 class="text-center">• 26 challenging levels •</h3>
<h3 class="text-center">• Gamepad and Keyboard controls supported •</h3>
<h3 class="text-center">• Online Leaderboards •</h3>
<h2 class="text-center">•••••</h2>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzk5NDI4Ni5wbmc=/original/InKhar.png" loading="lazy"></h3>
<h2 class="text-center"></h2>
<h2 class="text-center">•••••</h2>
<h4 class="text-center">A game by <a href="http://twitter.com/zerofiftyone_" target="_blank" rel="nofollow noopener">Ben Wilson</a></h4>
<h4 class="text-center">Made during&nbsp;<a href="https://itch.io/jam/wizard-jam-6" target="_blank">Wizard Jam 6</a></h4>
<h4 class="text-center">Leaderboard hosting by&nbsp;<a href="http://www.dreamlo.com/" target="_blank" rel="nofollow noopener">Dreamlo</a>.</h4>
<h1 class="text-center"><strong><a target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzk5NDMyOS5wbmc=/original/Or0Lgh.png" style="max-width: 100%" loading="lazy"></a></strong></h1>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MYvgBxWGpqs?&autoplay=0&loop=1&rel=0&showinfo=0&fs=0&controls=0&color=white&iv_load_policy=3&playlist=MYvgBxWGpqs&modestbranding=1" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5Mi5wbmc=/original/goXKQt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5MS5wbmc=/original/tjM6gO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5My5wbmc=/original/RZ7z0K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5MC5wbmc=/original/ip7cFl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5NC5wbmc=/original/LRt7AY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5NC5wbmc=/original/OLVvf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5NS5wbmc=/original/dqVeuh.png]]
<p>Containment is a small, minimalist strategy/simulation game where you try to maintain the growth of bacteria. The core gameplay is easy to pick up but very challenging to master. The game can be completed in one sitting, but has leaderboards and challenging goals to accomplish that might take longer!<br></p>
<p><img src="https://img.itch.zone/aW1nLzE1OTgwOTkucG5n/original/UjT%2Bo9.png" loading="lazy"><br></p>
<p><strong>Core Gameplay</strong><br>Containment is turn-based; the bacteria proliferate, you fight back, and the cycle continues. There are a number of rules that give depth to the strategy involved in achieving three stars on each level:<br></p>
<ul><li>You have a limited number of doses</li><li>Intentionally ending your turn early and letting the bacteria grow lets you research stronger antibiotics</li><li>&nbsp;All bacteria lose one health per turn</li><li>Any bacteria without neighbors die the next turn</li><li>&nbsp;Every isolated bacteria gains you bonus points</li><li>Each extra dose at the end of the game earns you bonus points</li></ul>
<p><strong><img src="https://img.itch.zone/aW1nLzE1OTgxMDEucG5n/original/82cBzx.png" loading="lazy"><br></strong></p>
<p><strong>Aesthetic</strong><br></p>
<p>The game features a mix of cute and sleek design with a visually pleasing color palette and satisfying interactions in every corner. The music is soothing and relaxing to listen to while you battle the unending bacterial proliferation.</p>
<p><strong>Content</strong><br>The game contains the following amount of content:<br></p>
<ul><li>Comprehensive and interactive tutorial</li><li>9 brain-teasing and challenging levels</li><li>&nbsp;A creative sandbox mode (unlocked at the end of the game)</li></ul>
<p><img src="https://img.itch.zone/aW1nLzE1OTgxMDMucG5n/original/M8KMxc.png" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AZSW1mOT_gY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDUuanBn/original/ET8mOg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDQuanBn/original/4K99bo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDYuanBn/original/72E%2BPO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDguanBn/original/YdZkDH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDcuanBn/original/9GqT6O.jpg]]
<h3><img src="https://img.itch.zone/aW1nLzU3MjMyMDQuZ2lm/original/n6I3Ov.gif" loading="lazy"></h3>
<h3>Control Override&nbsp;Is A Puzzle Game About&nbsp;Control.</h3>
<p>You play as a&nbsp;<strong>hacker&nbsp;</strong>who has hacked into an&nbsp;<strong>rogue&nbsp;</strong><strong>AI&nbsp;</strong>to&nbsp;<strong>terminate&nbsp;</strong>it.</p>
<figure><img src="https://cdn.akamai.steamstatic.com/steam/apps/1406090/extras/not-a-gif.gif?t=1618990597" loading="lazy"></figure>
<p><br>Delve into a virtual cyberspace inside a rogue AI that YOU created in the past.<br><br>Solve puzzles.&nbsp;</p>
<p>Break through the AI's security layers.</p>
<p>&nbsp;Reach the core.&nbsp;</p>
<p>Terminate the AI.<br><br><strong><em>But Should You?</em></strong><br></p>
<p><img src="https://cdn.akamai.steamstatic.com/steam/apps/1406090/extras/noisyAI.GIF?t=1618990597" loading="lazy"><strong></strong></p>
<h2>Key Features</h2>
<ul><li>Simple mechanics. Unexpected consequences.<br>
</li><li>Physics defying puzzles.<br>
</li><li>A generous rewind mechanic that lets you fix your mistakes. Problem solving is an iterative process.<br>
</li><li>A minimalist neon art style.<br>
</li><li>An intriguing story of a hacker who hacked an AI of his own creation.<br>
</li><li>Multiple endings that form a jigsaw puzzle-like narrative.
</li></ul>
<h2>Also, check out the steam page:</h2>
<p><iframe src="https://store.steampowered.com/widget/1406090/" frameborder="0" width="646" height="190"></iframe><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ilSdky4qJMA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNjAucG5n/original/I%2FE6Ht.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTgucG5n/original/PrNT6S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTQucG5n/original/YV%2Bg%2FE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTUucG5n/original/xwfVKg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNjEucG5n/original/mJm977.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTkucG5n/original/DVw0VT.png]]

<p>[<a href="https://raulranma.itch.io/cook-and-hero/devlog/239973/cook-hero-heri-de-cozinha" target="_blank">Ver descrição em português</a>]<br></p>
<p>You’re an aspiring master cook, in a face off competition amongst worthy rivals to create the perfect dish. Unfortunately, you’re supposed to make it out of scary and scaly monsters in very dangerous underground conditions.</p>
<p><br></p>
<p>
</p>
<h2>INGREDIENTS</h2>
<ul><li>This pamphlet, either printed or at hand digitally.</li><li>Between <strong>2</strong> and <strong>6</strong> players.</li><li>Special ten sided dice — <strong>d10</strong>s — or maybe an <strong>app</strong> to simulate them.</li><li>Some blank paper, pencils and erasers.</li><li>Around <strong>2</strong> to <strong>4</strong> hours.</li><li>Snacks and drinks (optional).</li></ul>
<p><br></p>
<h2>DIRECTIONS</h2>
<ul><li>Bring all your ingredients to a <em>mostly clear tabletop</em> (literal or digital). Reserve the dice/app for now.</li><li>Take your players and sort them. One of those will be the <em>Bard</em>, the rest will be <em>Adventurers</em>.</li><li>Have the bard player create their <em>Tale</em>, and the adventurers create their <em>Cook Characters</em> using the blank paper and pencils. Add erasers as needed.</li><li>With the tale and characters ready, add the dice/app and have players go from scene to scene, following the rules and creating a story together for up to 4 hours. Whenever a character dies or the story ends, have them say their epilogue to wrap it all up.</li><li>If you feel like it, add the drinks and snacks during the game, or take a small break to enjoy them before or after it’s all over.</li></ul>
<p><br></p>
<p>This is a pamphlet game based on <a href="https://gshowitt.itch.io/honey-heist" target="_blank">Honey Heist</a>,&nbsp; and created as a system to run <a href="https://roll4tarrasque.itch.io/baktos-terrifying-cuisine">Bakto’s Terrifying Cuisine</a> in — you’ll need some more weird dice for that, I’m afraid. The timber interior texture on the screenshots was made by <a href="https://www.freepik.com/kues1" rel="nofollow noopener">kues1</a>.<br></p>
<p><br></p>
<p><em>This game is licensed under CC BY-SA 4.0. You can create upon it, as long as you license your game in the same terms and give appropriate credit.<br></em></p>
<p><em><span></span><a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="nofollow noopener">https://creativecommons.org/licenses/by-sa/4.0/</a></em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTcyOTIuanBn/original/jCnzwJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTIzMzUucG5n/original/s1SlwV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTI0NzUucG5n/original/LJGgTv.png]]
<p>Cook, Serve, Delicious! 2!! is the massive sequel to the surprise best selling original, one of the few games that gives players complete control on how they want to build their restaurant.</p>
<p>The game starts like any other morning at SherriSoda Tower as you take the elevator up to open Cook, Serve, Delicious!, a platinum star restaurant that was surging in popularity thanks to your amazing chef and management skills. Just then, a swarm of police surround SherriSoda Tower. It seems the SherriSoda head executives were secretly stealing funds from the company at the same time they were incurring a staggering amount of debt, draining the accounts of the tower and several of the businesses inside of it, including CSD. Just like that, the tower was closed and put up for federal auction, including everything inside of it. It was all over… the Cook, Serve, Delicious! restaurant was no more.</p>
<p>Angry but determined to rebuild, you’ve scrounged up all of your personal life’s savings and bought commercial space inside the Teragon Supertower, the largest skyscraper in the city. It’s here that you will start a brand new Cook, Serve, Delicious! restaurant, build it back to its former glory, and rebuild your legacy as the best chef in the world.</p>
<p>Features include:</p>
<ul><li>A 60+ hour experience as you build your restaurant from a roach infested eatery to a World Class Platinum Star experience by either running your own restaurant or branching out as a chef for hire, where you take jobs within the tower and various restaurants as you gain experience with the large array of foods, which spans 400 levels across 33 restaurants!
</li><li>Several modes including Classic Mode that brings back the classic gameplay of the original, Stress mode that instantly rockets the difficulty to the highest setting, and Zen mode, which allows you to take it easy and relaxes many of the stressful elements to provide an easy day of cooking. </li><li>All new gameplay features and additions, with a greater flexibility of difficulty for those who like it casual or<em><strong> insanely difficult</strong></em>.
</li><li>Over 200 foods, sides, drinks and desserts to choose from, a staggering increase from the 30 foods in the original game.
</li><li>New local co-op mode! The all new split screen co-op feature allows you to play through the entire game with two players, with the ability for players to drop in and out during your progress within the game.
</li><li>Tons of lore including an email system with over 600 emails, unlockable secrets, and tons more!
</li><li>Unlock over 1,200 restaurant objects and design your restaurant however you'd like with the Designer mode.
</li><li>All new 1080p native/60fps code.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/T_yIOosKNAg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTUucG5n/original/P67WXD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTYucG5n/original/Epaqke.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MjUucG5n/original/%2BUucYM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MjAucG5n/original/L%2F24Vp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTcucG5n/original/u7YjNa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTgucG5n/original/jb%2BEcb.png]]
<p><em>"best described as, “wow,&nbsp;Silent Hill,&nbsp;Twin Peaks, and&nbsp;The Wire&nbsp;made messy love all over&nbsp;Candyman&nbsp;while watching reruns of&nbsp;Bozo the Clown.”" </em>- <a href="https://www.dreadxp.com/review/cookies-review-definitely-lost-my-deposit-after-that/" target="_blank" rel="nofollow noopener">DreadXP</a><strong></strong></p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzU1NzUxNjAucG5n/original/tO4wxw.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzU1NzEzMDAucG5n/original/DSYeBT.png" loading="lazy"><br></p>
<p>Where the ordinary and the hard-to-believe meet in a gutter, the population of "The Darb" simply call it "home". Gang violence, poverty, and substance abuse leave Darby rife with drifters, murderers, and cash maniacs whose sole purpose in life is finding the next high or die trying. The town of the same name exists as a swollen, caustic juxtaposition of&nbsp;<em>Fear and Loathing in Las Vegas</em>&nbsp;and reruns of&nbsp;<em>Twin Peaks</em>&nbsp;gestating in the sweltering heat of Southern Florida.
</p>
<p>The optimistically named Orange Grove Houses, a dilapidated flop house of an apartment building where the only thing more parasitic than the rats and roaches are the tenants, squats obscenely at the end of a long abandoned housing development. A lone drug pusher hawks his wares to sun-deprived addicts when he's not falling prey to his own stock. After an especially odd trip, he finds himself tangled in a devil's weave of crime and hallucinations in halls that even God has given up on.</p>
<p>Inspired by black comedy&nbsp;<em>Trash Humpers</em>&nbsp;and VHS slashers like&nbsp;<em>The Texas Chainsaw Massacre</em>,&nbsp;<em>Cookies</em>&nbsp;is an&nbsp;obscene PSX-coated blend of Satanic cults, meth-dealing clowns and online torture chambers, all under the same backwards-ass roof.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1NzEyOTkucG5n/original/AT6Fk2.png" loading="lazy"><br></figure>
<p><strong>NOTE:&nbsp;</strong><em>This game features heavy use of camera filters/effects to simulate the video quality of a VHS tape, which may be triggering&nbsp;to photosensitive players.&nbsp;</em><em>I strongly suggest tweaking the game's visual settings to suit your monitor's resolution upon startup, as the game may be too grainy/blurry depending on your screen size.</em></p>
<p><strong>CONTENT WARNING:</strong>&nbsp;Drug use, torture, light sexual themes<br></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU1NzEyMzcucG5n/original/Khz45t.png" loading="lazy"><br></p>
<p><br></p>
<h3 class="text-center"><em>Cookies</em></h3>
<p class="text-center">Developed by <a href="https://twitter.com/stef_pinto_gd" target="_blank" rel="nofollow noopener">Stef Pinto</a></p>
<p class="text-center">In partnership with <a href="https://twitter.com/penquingames" rel="nofollow noopener">Penquin Games</a></p>
<p class="text-center">With music by <a href="https://twitter.com/penquinjohar" rel="nofollow noopener">Johar Ibrahim</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4ODQucG5n/original/yQS0Lw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4ODUucG5n/original/X%2Bnnh2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA5MzAucG5n/original/wfWHs3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4MzkucG5n/original/GPm4jl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU2ODU3MjkuanBn/original/c67Mjf.jpg]]
<p>In Coriander and The Fall of Orion you play as the titular Coriander as they deal with the emotional fallout of The Fall of Orion. I don't want to spoil the premise, but it is a tiny 3D Adventure game where you talk to others and cut down trees. If you're into stories about emotional&nbsp;fallen mecha, this game may be for you!&nbsp;</p><p>_____________________________________________________________</p>
<p>Coriander and The Fall of Orion is a game idea I've had for over two years, although it has changed very much over that time period. I made this prototype-of-a-prototype while unemployed when I had time to learn&nbsp;how to model and make simple art assets. I hope to eventually&nbsp;flesh this out more in the future and expand on the story. I'd also love to add functionality to allow you to give to the environment rather than just exploit it.&nbsp;</p>
<p>The game should take 10-15 minutes to play. You can control Coriander with the arrow keys, press the space bar to jump&nbsp;and use z to interact and chop down trees. Also note that you can not chop trees down immediately.&nbsp;If you have any major issues with it (like a game breaking bug, the game won't load, etc) please let me know and I'll try to patch it with a fix. Otherwise this is the final version until I decide to build on it and likely expand into a different game entirely.&nbsp;</p>
<p>If you end up playing this thank you! Feel free to leave a comment with thoughts on it!</p>

[img width=500 [https://img.itch.zone/aW1nLzQ1MTI0OTIucG5n/original/JpkxHX.png]]
<p>This unofficial supplement contains one organisation, four landmarks, six fallout options specific to two of the landmarks and several plot hooks for you to use in your game of Heart: The City Beneath.&nbsp;</p>
<ul><li><strong>The Order of Sanguine Sorcerers</strong>, a group who believe that you can use the flow of your own blood to map the Heart, and&nbsp;their headquarters&nbsp;<strong>Sacracordia</strong></li><li><strong>The Super Wonder Gallery</strong>, a cursed place of creation where physical manifestations of art take on lives of their own
  </li><li><strong>The Galactic Cake</strong>, an endless landscape of stars where you can walk from point to point to create your own constellations
  </li><li><strong>The Stables</strong>, a mysterious and&nbsp;ghostly tableau of a moment in time where everything in the universe is stable
  </li></ul>
<p>CORPUS is an unofficial supplement for&nbsp;<a href="https://rowanrookanddecard.com/product/heart-the-city-beneath-rpg/" target="_blank" rel="nofollow noopener">Heart: The City Beneath</a>&nbsp;by&nbsp;<a href="https://rowanrookanddecard.com/" target="_blank" rel="nofollow noopener">Rowan, Rook and Decard</a>.&nbsp;It is not a standalone game and requires a copy of Heart: The City Beneath to play.
  </p>
<p>Heart: The City Beneath is the property of Rowan, Rook and Decard. No copyright infringement is intended. CORPUS is not endorsed by or affiliated with Rowan, Rook and Decard.&nbsp;
  </p>
<p><strong>Content warnings:&nbsp;</strong>Heart: The City Beneath&nbsp;is a horror game and this supplement is written in the same vein. It contains&nbsp;self-injury, disembowelment, body horror, suicide, and ghosts.
  </p>
<p>Please let me know if you use any of these ideas in your game! I'd love to hear about how it went.&nbsp;<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgxMDYucG5n/original/aalTfA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgwNTQucG5n/original/GSEKR7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgwNTUucG5n/original/%2BxqRpB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgwNTYucG5n/original/hTpNmJ.png]]

<iframe src="https://www.youtube.com/embed/L1yB7PxqpJw?rel=0" allowfullscreen="" width="552" height="310" frameborder="0">
</iframe>
<h1 style="margin-top: 60px; margin-bottom: 40px">A puzzle game about planning the train route for the world's most awkward space colony</h1>
<p>Cosmic Express is a puzzle game about planning the train route for the world's most awkward space colony, from the minds behind <a href="https://draknek.itch.io/a-good-snowman">A Good Snowman Is Hard To Build</a> and the art of <a href="http://typhaine-uro.com" rel="nofollow noopener">Tyu</a> from Klondike. It's cute, harder than it looks, and guaranteed to give you hours of frustrating fun across hundreds of levels.</p>
<p>Awards:</p>
<ul>
<li>Finalist - IMGA Global, 2017</li>
<li>Finalist - IndiePlus, 2017</li>
<li>Official Selection - Indie Megabooth, GDC 2017</li>
<li>Official Selection - Google Play Indie Corner, PAX 2016</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/L1yB7PxqpJw?rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3NC5wbmc=/original/HV0b6I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3OC5wbmc=/original/gRKOkJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3Ni5wbmc=/original/gVeKRu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3Ny5wbmc=/original/IlsfYP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3NS5wbmc=/original/TlCKpg.png]]
<p>A <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, &amp; Bone</a> hack set in a post space age world. You will play the people who explore and repurpose spaceships for their community. <br></p>
<p>
Inspired by real world “<em>rocket booster hunters</em>” this game explores our relationship to objects from space and the relationships of a snowy campsite.
</p>
<p>Map the <em><strong>Fall Sector</strong></em> — area of rocket parts buried in snow. You will take turns as groups, exploring the site and the dynamics between the travellers.<br></p>
<h2>To play you'll need:</h2>
<p>•&nbsp;&nbsp; &nbsp;a stack of note cards
<br>•&nbsp;&nbsp; &nbsp;writing and colouring utensils
<br>•&nbsp;&nbsp; &nbsp;an unlabelled map
<br>•&nbsp;&nbsp; &nbsp;a standard deck of 52 playing cards</p>
<p><br></p>
<p>And check out this <strong>playlist </strong>by <a href="http://samleigh.itch.io" target="_blank">Sam Leigh</a> . It's so cool!</p>
<p><br></p>
<iframe src="https://open.spotify.com/embed/playlist/0LnYm0rkUGovDIarSCpQQv" width="300" height="380" frameborder="0"></iframe>
<p><br></p>
<p><a href="https://www.twitch.tv/videos/1047247318" target="_blank" rel="nofollow noopener">ACTUAL PLAY BY CRYSS</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzgucG5n/original/IfAbV4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0NDEuanBn/original/QWF5KR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjguanBn/original/21vSZf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjkuanBn/original/dqFUcs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzkucG5n/original/HtCjXt.png]]
<p><strong>A game of cosmic battle. Ram your opponent out of the ring, into oblivion. Attack? Parry? Dodge? Ro-Cham-Bo</strong><strong><br></strong></p><p>You might consider checking out this game's much more feature rich spiritual successor: <a href="https://dean-sick.itch.io/rebop-blasters">Rebop Blasters</a><br></p>
<hr>
<ul>
	<li>Keyboard Controls:
	<ul>
		<li>Player One
		<ul>
			<li><strong>(W/Z)(A/Q)SD</strong>: movement</li>
			<li><strong>SPACE</strong>: dodge (tap to parry)<br>
			</li>
		</ul>
		</li>
		<li>Player Two
		<ul>
			<li><strong>ARROW KEYS</strong>: movement</li>
			<li><strong>COMMA</strong>: dodge<br>
			</li>
		</ul>
		</li>
	</ul>
	</li>
</ul>
<p>
	Joysticks should work out of the box, left stick to aim, any button to dodge. If your joystick doesn't work, let me know and I'll address it.
</p>
<hr>
<p>
	<strong>FAQ:</strong>
</p>
<p>
	<strong>Q: </strong><em><strong>Isn't it spelled "Rochambeau"?</strong></em>
</p>
<p>
	<strong>A: </strong><em><strong>Cosmic Rochambo bears no resemblance to your Earth-game.</strong></em>
</p>
<p>
	<em><strong><br>
	</strong></em>
</p>
<p>
	<strong>Q: Why are we fighting?<br>
	</strong>
</p>
<p>
	<strong>A: <em>Because you must.</em></strong></p>
<hr>
<p>Send me videos of epic matches!<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/BMoD09BO3pU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU1OC5naWY=/original/HmxQ0i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU2MS5naWY=/original/x0NpJG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU2NC5naWY=/original/%2FEKAsE.gif]]
<p>2019 was a wild ride of a year for me, and the music in this album is largely inspired by the events that happened.</p>
<p>Tracklist:</p>
<ol><li>Dysphoria (4:01)</li><li>Cosmonauts (7:18)</li><li>The Journey (23:06)<ol><li>Descent</li><li>Questions</li><li>Turbulence</li><li>Blast Off</li><li>Reprieve</li></ol></li></ol>
<p></p>
<p>"Cosmonauts" is dedicated to Milo Mazurkiewicz, may she rest in peace.</p>
<p>this album is also available on <a href="https://lunaryuko.bandcamp.com/album/cosmonauts" target="_blank" rel="nofollow noopener">bandcamp</a> and streaming services like Spotify</p>
<p>Album cover art was done by <a href="https://twitter.com/majorbean_" target="_blank" rel="nofollow noopener">major</a><br></p>

[img width=500 [https://img.itch.zone/aW1nLzM2MjkyNTUucG5n/original/rlVUjV.png]]
<p>Craft a King is a GMless worldbuilding game that helps you collaboratively build an antagonist (or any NPC)  for an existing game or setting. Together, you and your fellow players will pick nouns and adjectives and form sentences around them which will fill in key details about your Leader's life. The game consists of Phases, after which the person with the best detail will be awarded a Point. Whoever has the most Points at the end of the last Phase will receive a Prize, which is a special detail about the Leader. <br></p>
<p>15-30 mins</p>
<p>By Aaron Voigt. Find me on Twitter @aaronsxl, or my website: aavoigt.com</p><p>5/22/21- Update 1.1 adds an Example of Play, Glossary, and cleaned up some confusing language and format inconsistencies. <br></p>

[img width=500 [https://img.itch.zone/aW1nLzU1MzE5MTIucG5n/original/fpazpA.png]]
<p></p>
<p>Crawl Space is a puzzle game where you control a 6 legged spider</p>
<p>Come check out the Discord Server while you're at it!:&nbsp;<a href="https://discord.gg/mk9T5SPV" rel="nofollow noopener">https://discord.gg/mk9T5SPV</a></p>
<p>The First Release of Crawl Space features 21 Fully Playable Levels with the ability to best your own score! Challenge your friends! (No Online Leaderboards, Sorry!)</p>
<p>There's also a level editor.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDE3OTQxLzIwODAyMTIucG5n/original/dEX8u3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE3OTQxLzIwODAyMTMucG5n/original/%2FvABkM.png]]
<p class="text-center"><span class=""><img src="https://img.itch.zone/aW1nLzE2NzU0MjEuZ2lm/original/6TvMUT.gif" loading="lazy"></span></p>
<p class="text-center"><span class=""><span class=""><strong>Knit bones, stitch muscles, and weave neurons into biologically-realistic underwater lifeforms.</strong></span></span><span></span></p>
<p class="text-center"><em>It's like Spore, but with actual science.</em></p>
<hr>
<p>Liked the cell stage of <em>Spore</em>, but wanted more depth? Gotten merrily lost in the graphical programming puzzles of <em>SpaceChem</em>? Love the "can I manage to build this...?" creativity of <em>Kerbal Space Program</em>?&nbsp;</p>
<p>Crescent Loom is the very first biologically-realistic nervous system simulation game. It lets you — in a hands-on, mad-scientist way — tinker with everything from neurotransmitter to the ecological niche of an animal.<br></p>
<p>So dive in and maybe — just maybe — by poking around with these simple creatures you'll figure something out about how your own body ticks.</p>
<h1 class="text-center">[ <a href="https://crescentloom.com" rel="nofollow noopener">More Info</a> | <a href="https://crescentloom.com/play" rel="nofollow noopener">Play Online Free</a> ]</h1>
<p><img src="https://img.itch.zone/aW1nLzE2NzU0MzMuZ2lm/original/323d%2B4.gif" loading="lazy"></p>
<hr>
<p>Crescent Loom is in open development<strong>; expect major bugs, crashes, changes, and additions </strong>as I work on it over the next few years.<br></p>
<p>The <strong>best way to keep an eye on this</strong> is by subscribing to <a href="http://tinyletter.com/wick" rel="nofollow noopener"><strong>wickletter</strong></a>.</p>
<p>You can share creatures you create on the <a href="https://www.reddit.com/r/crescentloom/" rel="nofollow noopener">reddit</a>.<br></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/jzoLJBHffyE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTY3NTQyNC5naWY=/original/01zjs8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTAyNjg2My5wbmc=/original/u0ki%2BD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTY3NjM4Ni5naWY=/original/UMyZ74.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMzM5NTYyNC5naWY=/original/KM5Laq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMzM5NTYyNS5naWY=/original/mkUHy8.gif]]

<h3 class="text-center"><a href="http://www.crossniq.com" rel="nofollow noopener"><em>Website</em></a><em> • <a href="http://www.facebook.com/crossniq" rel="nofollow noopener">Facebook</a>&nbsp;• </em><a href="http://www.twitter.com/crossniq" rel="nofollow noopener"><em>Twitter<br></em></a></h3>
<p>
</p>
<p>
</p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/jQnf8J-AFek" allowfullscreen="" frameborder="0"></iframe></div>
<h3 class="text-center"><a href="http://www.twitter.com/crossniq" rel="nofollow noopener"><em></em></a></h3>
<p><strong>CROSSNIQ+</strong> (CROSS-neek plus) is a speed-focused, arcade-style puzzle game inspired by "y2k-era" visual design - a tribute to highly polished, small-scope Japanese games from the late 90's.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1ODYucG5n/original/wUl0Mv.png" loading="lazy"><br></p>
<p>In CROSSNIQ+, the name of the game is re-arranging a grid of tiles to form <strong>"crosses" - rows and column of the same color.</strong> You can move tiles up, down, left or right - but moving them off the edge of the grid makes them wrap back to the other side, offering a unique and brain-bending challenge that's been compared to a mix between matching games and a color cube. Unlike other popular puzzle games, CROSSNIQ+ focuses on speed and technique rather than chains or combos - make crosses quickly and set up multi-crosses to earn bonuses.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1ODgucG5n/original/Rhqn9P.png" loading="lazy"><br></p>
<p>In Endless mode, keep making crosses to keep your timer filled - let it hit empty, and your game is over. In Time Attack, your time is a set amount - earn as many points as you can before the buzzer sounds. <br></p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1OTEucG5n/original/MgtQLp.png" loading="lazy"><br></p>
<p>Play against a friend in Versus, complete with items and special moves...</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1OTMucG5n/original/bvlU71.png" loading="lazy"><br></p>
<p>...or simply relax to a variety of different, aesthetically striking playfields in Chillout mode, where there's no score, timer, or game overs. No matter your playstyle, there's a mode in CROSSNIQ+ for you!<br></p>
<p>Let's Cross! Aim for THE TOP!</p>
<p><img src="https://img.itch.zone/aW1nLzI0ODAyNjAucG5n/original/IfL9X2.png" loading="lazy"><br><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/jQnf8J-AFek" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDAucG5n/original/r0plRU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDMucG5n/original/Wk1wT4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDIucG5n/original/LDwXsP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDQucG5n/original/h0Ao7v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDEucG5n/original/1pB8j%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODMuanBn/original/uprniR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODkuanBn/original/0hnHhZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODEuanBn/original/hL0i3z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTUuanBn/original/0SWK6N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTIuanBn/original/SlOx%2BC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTQuanBn/original/iM9EI3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxNzkucG5n/original/wuoeUk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODUuanBn/original/GiWGgs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODAuanBn/original/TeuD5f.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTMuanBn/original/qvN9VT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTkuanBn/original/GzoPxm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTYuanBn/original/E2CFsJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODguanBn/original/VxZr8S.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODYuanBn/original/odnXZh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQyMDAuanBn/original/%2BXW94x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTAuanBn/original/gjBcqY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODQuanBn/original/NRxDs7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTEuanBn/original/8CloAN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTguanBn/original/5puxzR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODcuanBn/original/qwhX0F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODIuanBn/original/ow937L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTcuanBn/original/FS0DT4.jpg]]
<h2>What is this?
</h2>
<p><strong>Cryptid (Mis)Communication</strong>&nbsp;is a silly game where you and a friend who&nbsp;haven't seen each other in a while pretend to be&nbsp;cryptids - creatures that have not been proven to&nbsp;exist. Since you're cryptids, you have to stay far&nbsp;apart from one another, otherwise you won't be&nbsp;very mysterious! The goal of the game is to catch&nbsp;up while keeping your distance.
</p>
<h1>Making yourself up as a cryptid is half of the fun.&nbsp;The other half is shouting from 200 feet away.
</h1>
<p>Playing Cryptid (Mis)Communication is a lighthearted, sweet, and silly time to help you connect with a friend who you haven't seen in a while and have a good laugh. And to wear the biggest, brightest, boldest outfits that no one has gotten to see for over a year.</p>
<h2>Rated G for <del>GAY</del>&nbsp;general audiences - yes you can play this with your kids! There is no foul language of any kind and is a fun romp for all ages.</h2>
<p><br></p>
<p>This game operates on Machine Age Productions'&nbsp;<a href="https://machineage.tokyo/olivia-hill-rule/" target="_blank" rel="nofollow noopener">Olivia Hill</a> rule, which is: NO FASCISTS ALLOWED.&nbsp;If you are a bigot you cannot play this game. It is&nbsp;against the rules. Heal yourself before engaging.</p>
<p>This game knows that Black Lives Matter.</p>
<p>This game fights for Trans Liberation Now.</p>
<p>This game was written on Powhatan land.</p>
<p><br></p>
<h2>Special thanks to...</h2>
<p>Every single one of my Kickstarter backers!!!, Speak the Sky's Publisher fund,&nbsp;trouser_mouse, venus,&nbsp;photos-public-domain.com for the paper texture,&nbsp;Alanis for the constant support, and my brother for being a pedant who is right <em>sometimes</em></p>
<p><br></p>
<h1>Stay safe out there</h1>
<p><br></p>
<p><em><strong><a href="https://www.kickstarter.com/projects/whatnames/cryptid-miscommunication" target="_blank" rel="nofollow noopener">Funded on Kickstarter on Feb 25, 2021</a> as a part of Zine Quest 3 -&nbsp;</strong></em><em>for more details on&nbsp;the campaign,&nbsp;please visit the&nbsp;<a href="https://www.kickstarter.com/projects/whatnames/cryptid-miscommunication" target="_blank" rel="nofollow noopener">kickstarter page</a></em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTAwNDM4LzUxMzc2NjUuanBlZw==/original/n9I7tf.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAwNDM4LzUxMzc2NjYucG5n/original/HY2d79.png]]
<p><em>"Cryptkeeper? Hello? Ah, hi, yeah we're back... sorry to bother you again. We... we don't know, er, there's, um, there's a bit of a situation with the crypt... yeah, I think we broke something. Sorry. Can you fix it?"</em></p>
<p>
</p>
<h2>The Basics:</h2>
<p>Every card serves dual purposes. If you explore a card as a tile on the map, it will trigger an Event Effect. However, if you instead draw the card as an item, you can use that card at any time to trigger an Item Effect. The map and the deck swap places every floor, so be careful about what you discard, because it'll come back as a map tile on the next floor!</p>
<p><img src="https://img.itch.zone/aW1nLzU5NjA2MzMucG5n/original/YYi4f6.png" loading="lazy"><br></p>
<p>A solo TTRPG made with inspiration from various&nbsp;roguelike games. Learn the game's systems and use them to your advantage!</p>
<p>Let me know what you think -- I expect I'll be tweaking the balance of the card effects, and your feedback will help!<br></p>
<h2>patreon:</h2>
<p>subscribe to my <a href="https://patreon.com/pancelor" rel="nofollow noopener">patreon</a> ($3+) and get this game for free! your support will help me make more of the sorts of games I've got here on itch. (fair warning: most are not TTRPGs, they're generally puzzle games, arcade games, and experimental games!)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MTAzMS81OTU1NzU5LnBuZw==/original/2jCnc%2F.png]]
<h1>The crystals return!</h1>
<p>
	Crystal Control II is the follow-up to <a href="https://virtually-competent.itch.io/crystal-control" target="_blank">one of our most successful releases</a>. The original game, released in 2014, was a competitive game for two local players with some bullet hell elements. Because that core gameplay seemed to resonate so well with the fans, we decided to stick pretty closely to the original formula for the sequel...but with some interesting new twists!
</p>
<h2>Features:</h2>
<ul>
	<li><strong>Local multiplayer action for two! </strong>Fight for control of the crystals to gain more firepower and take out your opponent...you only need to get one hit on them to win!</li>
	<li><strong>Easy to learn, hard to master! </strong>We've seen players of all skill levels pick up the game and understand it's simple controls. Don't let the simplicity fool you, though! The skill ceiling can be quite high, giving room for the competitive folks to shine.</li>
	<li><strong>Eight playable characters! </strong>Each character has different movement speeds, charge shots, and "Control" abilities (which can be executed after capturing more than half of the total crystals on-screen)!&nbsp;</li><li><strong>Solo practice mode!</strong> Crystal Control II was designed from the ground up as a competitive game for two players, but if you don't have a friend nearby you can still enjoy our new target practice mode. try to get a high score on every stage!</li>
<br>
</ul>
<h1>This game is best enjoyed with one or more gamepads!</h1>
<p>Crystal Control II is best played with two gamepads, but the game also includes two alternate modes if you only have one (keyboard vs gamepad or shared single gamepad).</p>
<p>Unfortunately, it's impossible to play the Versus mode of Crystal Control II with keyboard only. Most keyboards have a limit on simultaneous key presses that is much too low for the number of keys Crystal Control II would require (which means that key presses would be dropped randomly and create unfair matches).</p>
<p>Solo Mode, however, is playable with either a gamepad or a keyboard.</p>
<hr>
<h2>Gamepad Controls:</h2>
<p>
	<strong>In Menu:</strong>
</p>
<ul>
	<li>Analog Stick/D-Pad - Navigate Character and Stage Select screens</li>
	<li>A button - Select a character/stage</li>
	<li>B button - Cancel selection/exit menu</li>
	<li>Y button - Toggle display of character specific skill information</li><li>Back button - Exit to desktop (from main menu screen)</li>
</ul>
<p>
	<strong>In Game:</strong>
</p>
<ul>
	<li><span></span>Analog Stick/D-Pad - Move up/down</li>
	<li>A button - Fire L1 bullet/"Ready" for next round</li>
	<li>Hold A button - Charge</li>
	<li>Release A button - Fire L2 or L3 bullet (depending on charge time)</li>
	<li>X button - Activate "Control" ability (only available if you "own" 7 or more crystals)</li><li>Hold Back button - Exit to Character Select (both players must hold for 3 seconds)</li></ul>
<h2>Keyboard Controls:</h2>
<p><strong>In Menu:</strong></p>
<ul><li>Arrow Keys - Navigate Character and Stage Select screens</li><li>Z - Select a character/stage</li><li>X - Cancel selection/exit menu</li><li>C - Toggle display of character specific skill information</li><li>ESC -&nbsp;Exit to desktop (from main menu screen)</li></ul>
<p><strong>In Game:</strong></p>
<ul><li>Arrow Keys - Move up/down</li><li>Z - Fire L1 bullet/"Ready" for next round</li><li>Hold Z - Charge</li><li>Release Z - Fire L2 or L3 bullet (depending on charge time)</li><li>X - Activate "Control" ability (only available if you "own" 7 or more crystals)</li><li>Hold ESC - Exit to Character Select (both players must hold for 3 seconds)</li></ul>
<hr>
<h2>Credits:</h2>
<p>Programming by Izzy Neuhaus<br>Design by Michael Connolly&nbsp;<br>Art by Clover Greenhalgh &amp; Alexis Bogue<br>Music by Reid Turner<br>Sound Design by Derek Andes<br>Countdown Voiceover by Roxy Du</p>
<p>Created with <a href="https://www.scirra.com/construct2" rel="nofollow noopener">Scirra Construct 2</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/3C_zrhnL6ec" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTUzLnBuZw==/original/EiqH%2F6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU0LnBuZw==/original/w5MBt0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU2LnBuZw==/original/rrYFRd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU1LnBuZw==/original/WPTZmR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTgxLnBuZw==/original/aLLMZa.png]]


<p>In 2013, I was part of a team working on a game with the working title&nbsp; "Project: Pangaea". Unfortunately due to our inexperience at the time and how busy with our lives, project got canceled and I went solo with Roses&nbsp;Will Rise.&nbsp;Facing a long rut, I&nbsp;felt like trying to see what I can make in a smaller scale in a shorter amount of time - and here it is!</p>
<p>Please do take note that this is just a prototype, it is limited in many ways due to resources and time constraints. I might revisit it later to refine and&nbsp;make it a full game.</p>
<p>In the year 2306, a massive meteor is set to collide with earth, wiping out life as we know it. TYPHON, an aeronautical mining project has been assigned to deter the meteor away from earth, but only to find out that it’s a vessel for cybernetic activity.</p>
<p>Cyberhold is a turn-based first person dungeon crawler, with very basic soulsborne elements.&nbsp;</p>
<ul><li>No grinding or experience gains, collect stat boost energy cells that can be reused whenever needed.</li><li>32-bit game inspired low poly graphics.</li><li>dark, thick sci-fi&nbsp;atmosphere.</li><li>Robot on mech suit action.</li></ul>
<p><strong><em>Game controls:</em></strong></p>
<ul><li>F4 to go full screen</li><li>F5 to restart</li><li>WASD - movement</li><li>Q - strafe right</li><li>E- strafe left</li><li>Enter - accept</li><li>Esc - cancel</li><li>Page up to resize map</li><li>There is controller support but untested.</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNjMucG5n/original/0oKptL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNjUucG5n/original/XMhwCL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzAucG5n/original/Fnajwg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzUucG5n/original/YiOjlV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzcucG5n/original/zLsbtC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzkucG5n/original/x%2BydFx.png]]
<p><em><strong>Cycle 28 is a classic arcade space combat game where you have six minutes to beat your high-score. Simple controls, powerful upgrades, and intense dogfights. Perfect for when you just need to switch off and shoot something.&nbsp;</strong></em></p>
<h3>&nbsp;<em>Nominated for Best Game at BAFTA Cymru 2019</em></h3>
<figure><strong><em><img src="https://img.itch.zone/aW1nLzI4NzAxOTUucG5n/original/aWB763.png" loading="lazy"><br></em></strong></figure>
<p><strong></strong>As Olivia Bergen – a flight lieutenant that has become separated from her fleet – you only know Cycle 27. You live it over, and over, and over again. And if that wasn’t bad enough, every time you drop from warp&nbsp;<em>they</em>&nbsp;are waiting for you.</p>
<p>You don’t know who they are or what they want. You just know you’re the only thing between them and home. So you get better, faster, stronger. Maybe one of these Cycle’s you’ll figure it out. Until then, you can only keep dying.</p>
<p><img src="https://img.itch.zone/aW1nLzI4NzAxODcuZ2lm/original/bHl22b.gif" loading="lazy"><br></p>
<h4>Key Features</h4>
<p><strong>Kaleidoscopic space combat</strong>&nbsp;—&nbsp;Power slide your way between more bullets than any lesser pilot could handle. Nothing feels better than using your ship’s gun to propel you through enemy-infested space as you grip the trigger ever tighter.</p>
<p><strong>Upgrades</strong>&nbsp;— Beat your personal high score in a run to unlock upgrades. With 45 possible configurations, customise your ship and master new tactics to live just a little longer.</p>
<p><strong>Evolving story</strong>&nbsp;— Uncover the secrets of why you’re stuck in Cycle, why they’re hell-bent on destroying everything you love, and just who they really are.</p>
<p><strong>Epic original score</strong>&nbsp;—A powerfully atmospheric mix of modern orchestral and retro electronic sounds by Jordan Rees. (Composer of trailer music for The Mummy [Universal Pictures], Mother [Paramount Pictures], The Defenders [Marvel Studios]).</p>
<h3><img src="https://img.itch.zone/aW1nLzI4NzAxODguZ2lm/original/ivMmrn.gif" style="max-width: 100%; color: inherit; font-size: inherit" loading="lazy"></h3>
<h3>Reviews</h3>
<blockquote><em>“...we kept coming back to it again and again - and so will you.”</em></blockquote>
<p class="text-right"><a href="http://www.nintendolife.com/reviews/switch-eshop/cycle_28" target="_blank" rel="nofollow noopener">Nintendo Life</a></p>
<blockquote>“I can’t help but recommend it to anyone who’s looking for a healthy, arcade-style challenge.”</blockquote>
<p class="text-right"><a href="http://www.gamerswithjobs.com/node/1301807" target="_blank" rel="nofollow noopener">Gamers with Jobs</a></p>
<p><br></p>
<h3>Check out our newest game</h3>
<p></p>
<iframe frameborder="0" src="https://itch.io/embed/430934?linkback=true&amp;border_width=3&amp;bg_color=faefd4&amp;fg_color=222222&amp;link_color=fa5c5c&amp;border_color=899faf" width="556" height="171"><a href="https://pillbuginteractive.itch.io/making-it-home"><span class=""></span>Making it Home by Pill Bug Interactive</a></iframe>

<iframe width="720" height="450" src="https://www.youtube.com/embed/PyocLr6qTSE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDE3NjkuZ2lm/original/EjColW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjY1ODQucG5n/original/NlgeZl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDIucG5n/original/GRB5Aa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDc2MzQucG5n/original/UrXxpa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDEucG5n/original/SkiTuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDkucG5n/original/XZoywE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDYucG5n/original/UJViTU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDc2MzMucG5n/original/73dPuj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDgucG5n/original/XhVoBQ.png]]
<p>
A complete tabletop RPG in zine form— Play as intrepid reporters in a 1920s New York filled with speakeasies, crime, and the occult!</p>
<p>Rules reference online at <a href="https://dangerousrpg.com/rules/" rel="nofollow noopener">https://dangerousrpg.com/rules/</a><br></p>
<p>Everything you need to get started is included in the Zine. The game comes fully prepared with rumors and events, characters and locations that can be woven into play. Additional preparation is not required, though an interest in history can enrich the experience.</p>
<p>While a single session stands on its own, multiple sessions are meant to be strung together into a short campaign, during which recurring motifs and the progress of time tell a broader story about the city, characters, and publication.</p>
<p>This is for a <strong>PDF-only, digital version</strong> of the zine. <strong>60 pages</strong> long!</p>
<p>You can <a href="https://www.blankcodex.com/ks/landing" target="_blank" rel="nofollow noopener">learn more about the game here</a>&nbsp;or check out the <a href="https://www.blankcodex.com/ks/campaign" target="_blank" rel="nofollow noopener">successful Kickstarter campaign</a> here.</p>

[img width=500 [https://img.itch.zone/aW1nLzM2Mzg0MTIucG5n/original/9djtA6.png]]
<p>This is a customized GUI for ren'py. It includes the PNG files and all of the code already programmed into a renpy file (Not Built). You can take the code and assets out, or rename the renpy game file and use it.</p>
<p><strong>This was made in Ren'py 7.4.4.1439</strong>
</p>
<p><img src="https://img.itch.zone/aW1nLzU3NTA5NzkucG5n/original/mGsMbE.png" loading="lazy"></p>
<h3>Includes:</h3>
<ul><li>All Standard Screens
</li><li>Textbox, Choices, and Quick menu
</li><li>An "Extras" screen for Achievements, Endings and a CG gallery (Code Included!)
</li><li>Code for everything already plugged in
</li><li>Formatted for&nbsp;1080x1920
</li></ul>
<p>You can plug your script into the game file and change the name, or take the assets and code as needed.
</p>
<p>The game uses an open source font "Forum-Regular" which you can find for free:&nbsp;<a href="https://fonts.google.com/specimen/Forum?preview.text_type=custom&amp;query=forum" target="_blank" rel="nofollow noopener">Here</a>
</p>
<h3>Rights:</h3>
<p>If purchased you may use this project in commercial projects or free projects. You may not resell part of, or the whole GUI on its own. You can modify the GUI and code to suit your needs.
</p>
<p>You can credit me as Jaime Scribbles if you want, but it is not required.
</p>
<h3>Instructions:</h3>
<p>Download, unzip, and enjoy! Some additional instruction included in the download, see below!
</p>
<p><img src="https://img.itch.zone/aW1nLzQyMzMwMDQucG5n/original/u1oCc5.png" style="max-width: 100%" loading="lazy">
</p>
<figcaption>You can find the instructions.txt file under the custom GUI file after it is unzipped. This is the same place where you would find the game folder, and the errors, log and traceback.</figcaption>
<h3>Sample Assets:</h3>
<ul><li><a href="https://alte.itch.io/uncle-mugens-backgrounds" target="_blank">Background Art by Uncle Mugen</a>
</li><li><a href="https://dejinyucu.itch.io/agustina-visual-novel-sprite" target="_blank">Sprite by DejiNyucu</a>
</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkwLnBuZw==/original/lT1%2BeG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkxLnBuZw==/original/r%2Ffn5U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg3LnBuZw==/original/126DjF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg2LnBuZw==/original/D%2FpFk0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg4LnBuZw==/original/lhwbKZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg5LnBuZw==/original/Fzxbyg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg0LnBuZw==/original/%2BjKOd5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg1LnBuZw==/original/Z7DIY2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkyLnBuZw==/original/nJ6qqX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTgzLnBuZw==/original/%2FlTDM%2F.png]]
<p></p>
<p>Dark Hope is a puzzle adventure game set in a steampunk world where electricity started and ended its existence with the light bulb. Towering clockwork puzzles and archaic symbols cover the halls. Strange rifts of light span the hallways. Something lurks in the dark your only hope to freedom is to find the truth about this strange abandoned lab.</p>
<p>You wake up in a hallway, No one is around. Where the exit once was all you can see is black, Smoke fills the air. Where are you? Where did everyone go?</p>
<p>The vast majority of the puzzle are environmental mechanical puzzles and discovering clues as to the nature of this strange facility.<br><br></p>
<ul><li>Clock work gizmos galore</li><li>Books tons and tons of books filled with lab notes and plans</li><li>Buttons to push and valves to turn</li><li>A challenging puzzle adventure for those who do not want to be spoon fed</li><li>Bring your own notebook</li></ul>
<p><br></p>
<p><a href="https://discord.gg/xM3Cmne" rel="nofollow noopener">https://discord.gg/xM3Cmne</a><br></p>
<p>You must launch this game for the first time from the <a href="https://itch.io/app"></a><a href="http://" target="_blank" rel="nofollow noopener"></a><a href="http://itch.io/app" target="_blank">Itch.io APP</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SEtYrfYm4g4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNTEucG5n/original/Wu4CZn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE5NjE4MDEucG5n/original/er%2FdLF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NTEuanBn/original/F2JQ00.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNDkucG5n/original/AvQcdk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NTAuanBn/original/rPWPKk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNTAucG5n/original/FHmE7t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NDkuanBn/original/Itzk9F.jpg]]
<h1>&gt; ABOUT_</h1>
<p>Corporations suck!! Money'Surance Corp® especially sucks, so you're taking it upon yourself to hack the Money'Surance Corp® Tower™, steal money from the higher ups, and erase the debts of everyone subject to its monopoly.</p>
<h1>&gt; HOW TO PLAY_</h1>
<h1></h1>
<p>Click in search mode to emit a search wave. This will show you where nodes are. Press 1 to switch to infect wave mode, and click where you know nodes are. Pressing 2 will return u to search wave mode. Pressing tab will let you toggle between search and infect wave mode.</p>
<p>F toggles fullscreen!</p>
<p>Space will pause/resume the game!</p>
<p>Hold escape to quit!</p>
<h1>&gt; ACCESSABILITY INFO_</h1>
<ul><li>volume settings</li><li>customizable colours for everything</li></ul>
<h1>&gt; CREDITS_</h1>
<p>Incredible music by <a href="https://twitter.com/Lateralis_" target="_blank" rel="nofollow noopener">Lateralis</a></p>
<p>Rest of game by <a href="https://twitter.com/celechii" target="_blank" rel="nofollow noopener">Noé</a></p>
<p><br></p>
<h4>MACOS USERS PLS PLAY THRU THE ITCH.IO APP!!&nbsp;</h4>
<p>else take the download out of your downloads folder. macOS doesn't like it being written to so it can't save your username and it'll throw you into the tutorial every time you start up</p>
<p>EDIT: this *should* be fixed now, please let me know if it isn't! &lt;3</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTY3NDQ0LzMzNjI1OTkuZ2lm/original/nedzGK.gif]]
<p><strong></strong><strong>For a new world to flourish, the old must die.&nbsp;</strong></p>
<p><em>The world is in the grips of a tyrannical force that strikes anyone who dares question or rebel against their nigh omnipotent rule. You and your friends have a difficult task ahead of you.&nbsp;</em></p>
<p>In <strong>De:Throne</strong>, you play as a party of <strong>2+</strong> Heroes, working together to defeat the forces of a powerful and tyrannical God. It was created for the <a href="https://itch.io/jam/dethrone-god-jam/entries">Attack and Dethrone God Game Jam</a>. While not quite a TTRPG game, it is inspired by them and the game jam itself.</p>
<p>Pick your Hero Archetype and use cards to&nbsp;attack the powers of God, defend against its assault, and use your unique abilities to achieve victory! <strong>DENY</strong> the powers of God to deal destructive damage!</p>
<p><strong>This game is played with a standard playing card deck, with Jokers removed.</strong></p>
<p>The PDF includes the rules, 15 character archetypes to choose from, as well as character cards for 3 of those with helpful reminders of actions you may take each round, with more planned to come later! (You can keep up with my progress by supporting me on Patreon.)<br></p>
<p>Character archetypes currently available as character cards are:</p>
<ol><li>Youthful Hero</li><li>Turncoat Rival</li><li>Faithful Healer</li></ol>
<p>This is my first game ever, and I hope people enjoy it! Let me know what I can improve and adjust for a better experience!</p>

[img width=500 [https://img.itch.zone/aW1nLzQwMTQwOTEuanBn/original/XdIj4F.jpg]]
<p>Welcome to the dead bone planet of the Necromancer King!</p>
<p>You're a worthless hunk of bone, brought to life by the necromantic powers of some brooding space queers with swords and mysteries to solve, but that's not really about you. You had a single function and you performed it, and yet you're still here. Maybe while everyone else is distracted you can steal a golden barge and go exploring, or maybe you already escaped and these backgrounds are being used in another Troika! game.</p>
<p>I really haven't finished reading Gideon the Ninth so I&nbsp;really can't comment. I just really love skeletons. You know?</p><p><a href="https://www.rookspress.com/products/dead-bone-world" rel="nofollow noopener">Riso Printed copies now available at Rook's Press!!</a></p>
<p>Ossified Stenographer art and back cover art from&nbsp; Feral Indie Studio's Astrogothic art pack:&nbsp;<a href="https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-astrogothic">https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-astrogothic</a>. All other art is public domain.&nbsp;</p>
<p>Dead Bone World is an independent production by Allthingstruly and is not affiliated with the Melsonian Arts Council.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTA4Nzg3LzUxMzcyNjIuanBn/original/mbFFEk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA4Nzg3LzUxMzU2NTYuanBn/original/sBOl%2FU.jpg]]
<p><em><strong>"</strong></em><strong><em>After hiking for days you arrive at the Gate of Elders, a huge and elaborately carved stone archway set into a mountainside.</em></strong></p>
<p><strong><em>As a child you heard stories of the great treasures contained within, and of adventurers making their names while plumbing the deep caves and dungeons beyond.
</em></strong></p>
<p><strong><em>Lately, you have also heard that a great magical item known as the Philosopher’s Orb was stolen by the evil heretic, Somnax - who was spotted heading toward this place…
</em></strong></p>
<p><strong><em>Perhaps you can find more than treasure here, you may well return with the beginning of your own legend!
</em></strong></p>
<p><strong><em>You step through the Gate of Elders, and into the darkness beyond….</em></strong><em><strong>"</strong></em></p>
<p>~</p>
<p>Download and print the cards, or play the game virtually in your web browser. You will also need:</p>
<ul><li>A six-sided die (two distinct dice is ideal)</li><li>A coin</li><li>Something to note your character sheet on</li></ul><p><em>This is a single player game, though it can be run with a GM&nbsp;and a player.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDUuanBn/original/Ex8Yz5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDYuanBn/original/mNBPys.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDcuanBn/original/1hw9Xx.jpg]]
<p>Dear Poppy is a solo journaling game about tending to someone you love after they've transformed into a small cluster of small seeds. The game walks you through a resonant, emotional journey as you accept their new form and plant them. Write your reflections&nbsp;once a week over the period of at least seven weeks and caring for your loved one as they germinate and grow into a beautiful, tender seedling.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTYucG5n/original/GqIF9g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTUucG5n/original/3O%2FFTF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTcucG5n/original/SV18Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTQucG5n/original/xTDSOa.png]]

<h2>You are Death</h2>
<p>The Grim Reaper, the dark collector of lost souls. Unfortunately, your horse has fallen ill so you need to drive a bus instead.</p>
<p>Navigate traffic, shoddy roads, and try not to run out of gas while gathering up angels and demons. Deliver these wayward souls to heaven or heck across 50 levels&nbsp;in this simple retro puzzle game.</p>
<h3>Featuring</h3>
<ul><li>50 levels of increasing difficulty</li><li>Retro, chunky 1-bit pixel art</li><li>Broken roads, moving cars, gas cans, lots of twists and turns that&nbsp;up the challenge</li><li>Original authentic Chiptune soundtrack by Abstraction</li><li>Controller supported!</li><li>Turn-based puzzles and fast restarts, no time pressure!</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zTSZDCDXLPc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzQwNTI4NDEuZ2lm/original/kFTSl8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2OTAucG5n/original/XPpyCs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2ODkucG5n/original/plRtMJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjMwNTUucG5n/original/YRsXYj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2ODgucG5n/original/3wyz%2B6.png]]
<p>Two sticks, one fish, some flashing lights. Death Ray Manta is, quite definitely, a videogame in the purest sense. Rejigged, rebuilt, remastered in the year of our Molyneux 2015. <br> <br>Death Ray Manta is a short form top down arena shooter where you blow up enemies using colourful laserbeams. You spawn in the centre of the screen, moments later the screen is filled with mines, robots, rabbits and lasers from beyond the stars. Collect space gems for a bonus and shoot everything else that you can in order to flash lights at yourself. Aim for your own personal high score. How far into fish space can you get? <br> <br>32 screens of increasingly colourful and crazy laser firing mayhem from the brains behind (amongst other things) Squid Yes, Not So Octopus, SYNSO 2 and the challenge mode in Waves. Also, he's that hairy dude off the internet. You know the one. <br> <br>Death Ray Manta is made with the fine assistance of Mike Daw who provided the legwarmer chic tunes and Andy White, who helped out under the hood and kept me sane. Cover art by the legendary Ste Pickford. <br> <br><em>"Absolutely Brilliant!"</em> - <strong>Rob Fearon</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/q5cGqhnMv6I" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc2LnBuZw==/original/jsiH07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc3LnBuZw==/original/UBLEpt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc4LnBuZw==/original/35gLVq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc5LnBuZw==/original/NiGr%2BZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTgwLnBuZw==/original/i8JNKr.png]]
<p>Made for GBJam 8!</p>
<p><br>You are the Decommissioner - tasked with defeating the rogue AI MurderBot by gathering the tools/weapons you need while the MurderBot and it's minions are out to destroy you.&nbsp; Weapons and Equipment are OSP (On Site Procurement), but this is no sneaking mission. &nbsp;If you fail, try again, and the more enemies you defeat, the more equipment will be unlocked to find in the field.<br></p><p><br></p><p>By <a href="http://twitter.com/AngryMobOfSteve" target="_blank" rel="nofollow noopener">Steve Rynders</a> and <a href="http://twitter.com/LazyAhab" target="_blank" rel="nofollow noopener">James Youngman</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQyMDM1MDQucG5n/original/J7UXtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMDcucG5n/original/f7pOfg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMzEucG5n/original/mx4MTI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMjIucG5n/original/3OwLFu.png]]
<p><em>Dee Dum</em> is a 2D puzzle game with a simple premise - both characters move and jump at the same time, but their homes are in different spots.<br>As the home locations move and the world around them grows larger, the possibilities for brain-tickling puzzles become endless.</p>
<p>The in-browser version is just a demo - the first five levels to whet your appetite.</p>
<p>The full version includes 75 levels that will truly challenge your puzzle game playing prowess. &nbsp;Can you beat them all?&nbsp; Can you even unlock them all?</p>
<p><a href="https://eeease.itch.io/dee-dum-mobile" target="_blank">The (free) &nbsp;mobile version</a> has a bunch of in-app-purchases like hearts and level packs. &nbsp;This has none of that nonsense. &nbsp;It's a pure puzzle game where you have to get better to unlock the harder levels.</p>
<p>Note: <strong>If the game does well</strong> (greater than $100 across all platforms), level packs with new mechanics will be released. &nbsp;Your purchase of this version makes you eligible for receiving future level packs <em>for free</em>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/mdKgKdjjVc8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5Mi5wbmc=/original/v%2BxQbc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5NC5wbmc=/original/Auy%2Bvg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5My5wbmc=/original/0AkVAF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5Ni5wbmc=/original/zdLPQa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5NS5wbmc=/original/dSan9G.png]]
<h1>Deep Nightly Fathoms</h1>
<p>Inside this zine you will find a game that will take you and your fellow players through the Kingdom of Night, a liminal space between life, dream and death, inspired—and illustrated—by the beautiful art of Gustave Doré.</p>
<h3>Dive in to discover:</h3>
<ul><li>One-on-one or two-on-one play with expansions for larger groups.</li><li>Player characters who take a transformative journey over a land of sorrow.</li><li>Rules for exploring the Kingdom of Night and confront the dangers that lurk inside.</li><li>Tools to run a point-crawl exploration game, with an assortment of random tables to roll an adventure on the spot.</li></ul>
<p><em>Let us traverse these Deep Nightly Fathoms.</em></p>

[img width=500 [https://img.itch.zone/aW1nLzU1MTg0NTQuanBn/original/%2Bc6OpK.jpg]]
<p>The Democratic Socialism Simulator lets you play as the first socialist president of the United States. Can you redistribute power and wealth while addressing the climate crisis?&nbsp;&nbsp;</p>
<p>Enact radical reforms, tax the rich, transform the economy, tackle the most pressing issues without alienating voters or bankrupting the government. But beware: the ruling class won't give up its power easily. Even your closest allies may turn on you.<br></p>
<p>*Hundreds of choices based on existing policy proposals<br>*Randomly generated scenarios and multiple endings<br>*Room for different play styles, ideologies, and strategies<br>*A cast of extremely opinionated anthropomorphic animals<br>*Original Soundtrack by <a href="http://jessestil.es/" target="_blank" rel="nofollow noopener">Jesse Stiles</a></p>
<p>The Democratic Socialism Simulator is an attempt to prefigure the opportunities and challenges of a Sanders (or Sanders-like) presidency.&nbsp; It&nbsp;is meant to entertain, enrage, provoke socialist-curious players as well as comrades on the front lines of the political revolution.</p>
<p><a href="https://play.google.com/store/apps/details?id=com.molleindustria.demsocsim" target="_blank" rel="nofollow noopener">Also available for Android devices</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwNzgucG5n/original/lZ7mth.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwNzkucG5n/original/A3UNJa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwODAucG5n/original/BOqE9d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwODEucG5n/original/vZK1xf.png]]
<p></p>
<p>THE DEMON DOIF REQUIRES YOUR ASSISTANCE MINION. HE IS HUNGRY. FIND THE ITEMS HE WANTS FROM AMONGST THE PILE. DO NOT GET THEM WRONG. <br>CONTROLS:</p>
<p>MOUSE TO LOOK.</p>
<p>HOLD DOWN RIGHT CLICK TO GRAB.</p>
<p>LEFT CLICK WHILE GRABBING TO SLAP AN OBJECT.</p>
<p>MOUSE WHEEL WHILE GRABBING TO EXTEND ARM.</p>
<p>WASD TO MOVE.</p>
<p>SPACE TO JUMP.</p>
<p>HINTS: <br>THE ROPE CAN BE GRABBED TO RESET THE ITEMS. DOING SO WILL MAKE HIM UPSET. <br>BOMBS CAN STUN HIM. THIS ALLOWS YOU TO PULL THE ROPE WITHOUT MAKING HIM UPSET. <br>IF YOU RUN OUT OF TIME YOUR POINTS ARE DOUBLED.<br><br>CREDITS:&nbsp;</p><p>SOUNDS FROM TTMP3.<br>MUSIC FROM 0999: <a href="https://000999.bandcamp.com/album/ultra-53-in-1-ost" rel="nofollow noopener">https://000999.bandcamp.com/album/ultra-53-in-1-ost</a><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTYxLzUwNzc4MTEucG5n/original/aRT7pG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTYxLzUwNzc4MTAucG5n/original/BUI9cp.png]]
<h2><strong>Arcade Action IMMORTAL TRUCKER!</strong></h2><p>
	Race towards the Next Hell in an action packed shoot 'em up from the 16 bit era that never was. Power through walls of jagged metal, melt enemy bikers and vehicles, dodge furious lazerscorpions, and go toe to toe with massive bosses covered in guns.
</p><h2><strong>Devil Take the Wheel!</strong></h2><p>
	The truck drives itself, you control the guns and throttle. Burst fire, full auto, parry enemy projectiles or just crush everyone under the wheels. Choose from a randomized gear collection after every wave and put together your evilest build.
</p><h2><strong>Darkest Driving Demons</strong></h2><p>
	Crank out high scores and dominate your weak, mewling friends on a global leaderboard. Skill based mechanics reward full clears and perfect play against ever more challenging waves and hellish enemy trucks.
</p><hr><p>Demon Truck is currently campaigning on Steam Greenlight! If you like the game, give it a vote and help spread diesel and brimstone all over the globe.</p><p><a href="http://steamcommunity.com/sharedfiles/filedetails/?id=659690731" target="_blank" rel="nofollow noopener">Vote for Demon Truck on Steam Greenlight!</a></p><p>Demon Truck was originally created as part of Ludum Dare 34 during the weekend of December 11th 2015. Ranked in the 98th percentile in fun, enough of my friends encouraged me to polish the game up a little and see what could be made of it, so here we are.</p><p><a href="http://ludumdare.com/compo/ludum-dare-34/?action=preview&amp;uid=5448" target="_blank" rel="nofollow noopener">Check out the Ludum Dare version here!</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bPfhKZWB1X4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU4LnBuZw==/original/igLBbR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU3LnBuZw==/original/iP4%2FkV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU2LnBuZw==/original/nRR5fN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU0LnBuZw==/original/nrKFNz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU1LnBuZw==/original/tuBqfT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU5LnBuZw==/original/BwYgQr.png]]
<h1>INTO THE VAMPIRE'S DEN</h1>
<p>''DEN'' is a supplement to use with <a href="https://torthevic.itch.io/vampires-claymores" target="_blank">Vampires &amp; Claymores</a>.&nbsp;<br>There are 12 tables to help you flesh out an unique vampire den for your games.&nbsp;</p>
<p>In this 15 page zine you will find:&nbsp;</p>
<ul><li>Den generator! What is this place,&nbsp; how bad is it, what's going on???</li><li>''What have they done to the place?" table&nbsp;</li><li>Den Dwellers, who is it? Who's there?</li><li>Cults and factions! 4 different factions to use in any vampire-themed game</li></ul>
<p>This zine was made using Affinity Publisher, Adobe Photoshop and the <a href="https://dwuff.itch.io/watercolour-texture-pack-sunrise-sunset" target="_blank">marvellous background paintings by Dwuff</a>.&nbsp;<br></p>
<p>It is a submission to the #RPGLATAMJAM</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjYuanBn/original/coHoyc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjEuanBn/original/dlmwmx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjAuanBn/original/E9nAI2.jpg]]
<p>&nbsp;As a lover of all things queer, you, dear reader, have a calling in literature. Like so many writers before, your great novel—the one that aches in your soul—isn't ready. But this game is.<br><br>Take time to create an author, the trashy romance novel they wrote, and the two lesbian leads of that trashy novel. Then play it all out.<br><br>Follow them through the three classic acts of any lesbian love story: Denial, Yearning, and Crisis. And then enact that happily ever after ; )<br><br>Denial &amp; Yearning is:<br></p>
<ul><li>&nbsp;A story-heavy two player&nbsp;GMless roleplaying&nbsp;&nbsp;game</li><li>Playable in an evening (though it may take longer if you make the novel cover a true work of art)</li></ul>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQyMTMxLzUzMzkwNjUucG5n/original/7CsLU0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQyMTMxLzUzMzkwNzAucG5n/original/gRInrn.png]]
<p><strong>|| 1.1 Bug Fixes:</strong></p>
<p><strong>No longer needs to be run in admin mode, &amp; save files work as intended!</strong><br></p>
<p><strong>Physics sometimes decide not to initialise, using escape to go back to menu &amp; restarting game should fix it eventually...||</strong></p>
<p><strong>CONTROLS: A &amp; D to move, Q &amp; E to rotate, ESC to open menu.</strong><strong></strong></p>
<p>Density Experiment is a student project by Tim Drew (Red Squirrel Games)&nbsp;&amp; Cameron&nbsp;Callaghan.</p>
<p>In Density Experiment you are stuck in a maze full of traps, &amp; you must collect 3 treasures in order to escape.</p>
<p>Make your way through the maze &amp; avoid the many hazards by rotating the world around you - you are unable to jump, so use the changing gravity to your advantage. Fly through levels without touching the ground or take a more cautious approach &amp; size up the challenge ahead - the choice is yours!</p>
<p>Features 50+ levels of a looping maze you can easily get lost in, original music to keep you company as you die many times &amp; a unique rotation mechanic which provides a fun&nbsp;&amp; interesting way to move around.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hcVGOaq-iKo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTg4LnBuZw==/original/VfI3GO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTkyLnBuZw==/original/uJ6%2B1O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTkzLnBuZw==/original/53yFz8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTk0LnBuZw==/original/nAGMkE.png]]
<h4><img src="https://img.itch.zone/aW1nLzM0MDE3NDYuanBn/original/KPFr5s.jpg" loading="lazy"></h4>
<p><br></p>
<h4>10:50 PM.</h4>
<p><em>My bichette is waiting at home and I’m determined to bring her something special. The little dépanneur on this side street may still be open. It’s my last chance.</em><br><br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjIucG5n/original/Kgn8sn.png" loading="lazy"></p>
<h4>A SMALL GAME BY G.P. LACKEY</h4>
<p>You’re out on a rainy late-night quest for a very particular gift. The only problem is you don’t know what it is yet...</p>
<p>Finding a corner store that’s open at this hour must be kismet! With the help of its peculiar proprietor and her unusual inventory, you’re sure to find something worth your search. What will the gifts you pick foretell?</p>
<p>The dep is closing in an hour, so be forewarned… <strong>this is a single-sitting game</strong>.</p>
<h4>KEY FEATURES</h4>
<ul><li>Shop and explore at your own pace, discovering new secrets the longer you stay</li><li>Collect as many or as few gifts as your heart desires, budget is of no concern when it comes to your love!</li><li>Set in a magical, mystical interpretation of Montréal</li><li>Estimated completion time: 1–2 hours, a miniature jaunt</li><li>Fully bilingual (English and French with a Québec twist) - switch as you like!</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjQucG5n/original/J0uyXJ.png" loading="lazy"></p>
<h4>ABOUT KO_OP mini</h4>
<p>KO_OP is making space for its team to be able to experiment, without the demands of a large production. This atmospheric little walkabout game is the first from our new initiative, KO_OP mini.<br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjYucG5n/original/ysgsOA.png" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/BC6rjLto4TY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzE1MTg0NDguZ2lm/original/gpJPsr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzIuanBn/original/0GDdsn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNjkuanBn/original/CV1HRQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNjguanBn/original/wnRTw4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzEuanBn/original/Xh46kX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzAuanBn/original/kq90Up.jpg]]
<h3 class="text-center">Description
</h3>
<p><strong>Derpy Deep Drive</strong> is a 3D Endless<strong>*</strong> Driving game.</p>
<p>In this endless* driving game, How far can you drive your School Bus?</p>
<ul><li><strong>Single&nbsp;Endless Mode.</strong></li></ul>
<ul><li><strong>Maneuver around obstacles to avoid getting damaged.</strong></li></ul>
<ul><li>Hit an Obstacle? don't worry your bus is more durable than you think. But how many hit's can it take?</li></ul>
<ul><li>Let's see your amazing Bus Driving skills.</li></ul>
<ul><li><strong>Made for Ludum Dare 48.</strong></li></ul>
<ul><li><strong>This game might not be balanced at all.</strong></li></ul>
<ul><li><strong>If the game is lagging, reduce the graphics quality using the in-game settings menu.</strong></li></ul>
<h3 class="text-center">Controls</h3>
<h1 class="text-center">🖱️</h1>
<p class="text-center">Mouse</p>
<h3 class="text-center">Engine</h3>
<p class="text-center"><strong>Unreal Engine 4</strong></p>
<h3 class="text-center">Credits</h3>
<ul><li>Music from <a href="https://www.zapsplat.com" target="_blank" rel="nofollow noopener">ZapSplat<br></a></li></ul>
<h3>Update 1</h3><p><strong>Updates</strong></p>
<ul><li>Added Endless Mode.</li><li>Added the Distance meter to the Bus and removed the HUD UI.</li><li>Updated Out of bounds check to be more precise.</li></ul><p>Bug Fixes</p>
<ul><li>Fixed Score, speed and health not getting reset after game over.</li><li>Disabled an unintentional Jump functionality.<br>
</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDc2LnBuZw==/original/eMm%2Fcp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDk2LnBuZw==/original/4dTprE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDk1LnBuZw==/original/3ZO46G.png]]
<p>Controllers required to play.<br><br>Move with the left joystick, rotate camera right right joystick.<br><br>Break things, break other rocks!!!<br><br>Uh, there is no restart button so like, if a player falls off the map, you need to close the game with alt+f4 and restart it, sorry !!!<br><br>I hope you have fun !!!</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OsSRmjq3lr8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzYwNjk5MTcucG5n/original/sbnuqP.png]]
<p><strong>The Destructivator Returns!</strong></p>
<p>Take on the role of a tiny little super solider decked out in lime green and blast and insta-melee your way to victory!&nbsp;<br></p>
<p>Unapologetically old school, forget the last 30 years ever happened and take on vast armies of soldiers, robots, spaceships, cruel traps, mini bosses &amp; bosses - on foot and using various vehicles you find. With sharp colourful graphics, catchy tunes &amp; 54 levels, there's a lot of fun packed into this little gem!</p>
<ul><li>&nbsp;54 Levels</li><li>&nbsp;Vast array of enemies - soldiers, sentries, turrets, tanks, space ships, spiders, centipedes....</li><li>&nbsp;Bosses &amp; frequent mini boss fights</li><li>&nbsp;Wear a hideous lime green suit</li><li>&nbsp;Commandeer enemy ships and attack from the air</li><li>&nbsp;Easy, Normal and Brutal skill levels to suit everybody</li><li>&nbsp;Small characters in a big screens for that classic 80s feel</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Q5_RN335mck" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA3MDAucG5n/original/WvxFtT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODYucG5n/original/8wkPfS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2OTAucG5n/original/0P4YQq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODUucG5n/original/ZwBsJa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2OTgucG5n/original/gk%2BtzU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODkucG5n/original/DhrtLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODcucG5n/original/seFBIU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODgucG5n/original/B2xi6s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA3MDEucG5n/original/29RY0y.png]]
<p>Detail is a worldbuilding game for 1-5 people. This game facilitates collaboratively&nbsp;building a setting through the use of small Details given significance. Play it as a stand alone game, or to create a setting for other roleplaying games or stories.&nbsp;</p>
<p><br></p>
<p>Detail is a game by Declan Lowthian.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzQ5MDAxNTcucG5n/original/7reezD.png]]
<p>It’s time to move across the country, and the only person with a car is your ex-partner.&nbsp; Suck up your pride and play through your trip and relationship’s road bumps, obstacles, and detours. Witty dialogue and moments of quiet, human connection are interspersed on a trip that reflect the oddities and struggles of Midwestern drives.<br></p>
<p>---<br></p>
<p><em>Detours</em> was made by Mismatched Games (<a href="https://twitter.com/slitherpunk" rel="nofollow noopener">Autumn</a>, <a href="https://twitter.com/waitwhatnostop" rel="nofollow noopener">Kinsey</a>, <a href="https://twitter.com/thedeerforest" rel="nofollow noopener">Roscoe</a>,&nbsp;&nbsp;<a href="https://twitter.com/samloveskirby" rel="nofollow noopener">Sam</a>, and <a href="https://twitter.com/BirbBabe" rel="nofollow noopener">Plum</a>)&nbsp;as part of Code Coven's 2020 <a href="https://codecoven.co/the-summer-program/" rel="nofollow noopener">Summer Program</a>.<br></p>
<p>You can buy&nbsp;<em>Detours</em> for $5.99, or the game as well as the&nbsp;<em>Detours&nbsp;</em>Art Book PDF and game OST (in both MP3 and FLAC formats)&nbsp;for $9.99.</p>
<p>---</p>
<p>HOW TO PLAY:</p>
<p>Play as Daniella as you slowly make your way back to her childhood home with help from her ex, Mish, and their car.<br></p>
<p>Use your mouse, arrow or WASD keys to select dialogue options. Click or press space to confirm your choice or progress dialogue.&nbsp;<br>Your progress is saved at the end of each in-game day. You can continue by selecting "Acts" from the start menu.<br>You can explore pit-stops as Daniella by using your arrow or WASD keys.<br>Interact with people and the environment by clicking or pressing space. Press the Escape key to look at your inventory.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AVbqXMFP2QQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjIucG5n/original/%2F1lRTA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjQucG5n/original/sye9z7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjMucG5n/original/nDGENs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjEucG5n/original/xehfhX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjUucG5n/original/aCqIop.png]]
<p><em>Henry Bantam. Bank robber. Noose dodger. They say Bantam was shot dead outside Elksville and a lightning strike knocked him right back to his feet, alive again. They say Bantam's boots melted and the bullets ran out the holes in his chest like prairie dogs fleeing a flooded burrow.</em></p>
<p><em>It's 'cause Bantam went down to the crossroads, they say. Made a Deal. Gave up something awful powerful in exchange for the fastest gun. For uncanny luck. For eyes in the back of his head.&nbsp;</em></p>
<p><em>They say a lot of things.</em></p>
<p><em>. . .</em></p>
<p><em>They say there's a bounty on his head.&nbsp;</em></p>
<p><strong><br></strong></p>
<p><strong>DEVIL, AIM FOR ME</strong> is a Weird West incursion rooted in&nbsp;Trophy Dark. Don't know Trophy Dark?&nbsp;No problem! All the rules you need are contained within.&nbsp;</p>
<p><span></span></p>
<p>This is a collaborative play-to-lose RPG scenario about bounty hunters on a doomed expedition in a hostile world.&nbsp; It is very likely that all of them will die or—at best—be permanently scarred and haunted, destroyed by their desire.&nbsp;</p>
<p>If that sounds like a good time, then saddle up. Bantam's out there. Find your fortune.</p>
<p><em>--</em></p><p class="text-center"><strong>If you want a physical copy</strong>, head over to&nbsp;<a href="https://www.coldhearthcollective.com/" target="_blank" rel="nofollow noopener">Cold Hearth Collective</a>.</p><p>--</p>
<p><em>"Fantastic take on Trophy Dark, from the reframing of Rituals to "Becoming Myth" to the brilliant escalating Conditions (It Gets Worse). If, like me, you're drawn to horror more than Westerns, you'll be delighted. And horrified."</em>&nbsp;</p>
<p class="text-center">&nbsp; &nbsp; &nbsp;- Gabriel Robinson (<em>Candlelight</em>)</p>
<p><br></p><p><br></p>
<p><strong>Spotify Playlist</strong></p>
<iframe src="https://open.spotify.com/embed/playlist/4OMHt6SeuXb5gAIfmZbE1G" width="300" height="380" frameborder="0"></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgxMzguanBn/original/OBpGcp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgwNzIuanBn/original/hrzYF%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgwOTMuanBn/original/r4LK3%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMxMzU2MTcuanBn/original/rZAYZF.jpg]]
<p><strong>Diàn Xīn (电心</strong><strong>) Electric Heart</strong> is a Cyberpunk <strong>TTRPG</strong> about trying to survive in a world that doesn't want you to thrive, without losing your sense of self worth or your will to keep going.</p>
<p>This game can be played both with and without a Game Master. It is designed with <strong>4-6</strong> players in mind, including a Game Master, or <strong>3-5</strong> players without a Game Master.</p>
<p>To play all you need are&nbsp;<strong>six-sided dice</strong> and <strong>character sheets&nbsp;or a means to record information</strong>.</p>
<p>The pdf is 13 pages long.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTMzMDU3LzUyODU4NDMucG5n/original/Tfj014.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMzMDU3LzUyODU4NDQucG5n/original/nTgjuJ.png]]
<p>Dino Run is a 2D side scroller made using Flutter and Flame engine. It is basically a clone of T-Rex game that you see in&nbsp;Google Chrome. The only difference is this one is much better visually.</p>
<p>I am making this game as part of a&nbsp;YouTube series on my channel. So if you are interested in learning how to make this game check out this playlist. -&nbsp;<a href="https://youtube.com/playlist?list=PLiZZKL9HLmWOmQgYxWHuOHOWsUUlhCCOY" target="_blank" rel="nofollow noopener">DevKage - Dino Run</a>. And while you are at it, maybe also subscribe to my channel there.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDcucG5n/original/e9ENZc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDIucG5n/original/jXvvKJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDQucG5n/original/GJSc1q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDUucG5n/original/3tSsxu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDgucG5n/original/Pmzie4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDMucG5n/original/5ZohuG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc5NTI2LzQ5NTA4NDYucG5n/original/bCuNKI.png]]
<p>Disobedient Sheep is a frantic and lighthearted sheep herd'em'up for two to four players. Play as adorable sheepdogs and guide your hapless flock to victory in four different game-modes by avoiding anvils, dodging dynamite, and bailing on boulders.<br><br>This is a small, unique game. Ideal for short-sessions, young children, rowdy friends, older folks and non-gamers.<br></p>
<h2>Features</h2>
<ul><li>Frantic fun ideal for parties and family get-togethers</li><li>Simple to pick up, tricky to master</li><li>Advanced herding and flocking AI</li><li>Controller sharing - two players with one controller; four players with two</li></ul>
<h2>Co-Op</h2>
<p>Challenge your high-scores in a time trial, or hold out for as long as possible in Endless mode.<br></p>
<h2>Versus</h2>
<p>Who's a good sheepdog?!&nbsp;<strong>You are!&nbsp;</strong>Look after your flock while trying to drive your opponents sheep into danger, or compete over territory in King of the Hill. Chow down on dog biscuits to run faster, drop anvils on your opponents, and lure sheep with tasty carrots.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/y8jHYaDM2Lk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzgucG5n/original/0J1Pks.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzcucG5n/original/yljgJD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODAucG5n/original/mrQMFK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODQucG5n/original/1307M2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzUucG5n/original/OseCCL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODMucG5n/original/sewiWR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODEucG5n/original/XjHP5n.png]]
<p><em>"There is a deep, ancient connection between gambling and divination"</em></p>
<p><em>- Aaron C. Brown</em></p>
<p>This is a supernatural horror RPG/ritual game&nbsp;that can be played by yourself or with friends. All you need to play is some index cards, writing utensils, coins to be used as tokens, and, most importantly, a Magic 8 Ball, or a similar tool or app that answers yes/no questions. You will play the role of a Seer who regularly receives premonitions of dark futures, and works to defy or fulfill them. You will hold seances and perform rituals when you require more information, and you will pull apart or mend the fabric of fate with your actions, all while avoiding the watchful gaze of wrathful gods.<br></p>
<p>In a world that has mostly forgotten magic, you know the truth, and your actions will shape the world around you, for better or for worse. This game includes:</p>
<ul><li>A quick, easy character creation system</li><li>A dice-optional system that uses coin flips and a Magic 8 Ball</li><li>A freeform, fiction-first roleplaying experience</li><li>A ritual for divining the future and unraveling the mysteries of the&nbsp;Abyss</li><li>Optional rules and substitutions for those without access to a Magic 8 Ball</li><li>A&nbsp;GMless system that can be played alone or in a group</li></ul>
<p>Whether you play by yourself or brave the Abyss with friends, unravel the mysteries of the unknown and defy your fate!</p>
<p><strong>1.1 Update:&nbsp;</strong>Introducing the 1.1 version of DIVINATION, with a revised Action Phase! This quick little update provides more clarification for certain actions during the Action Phase, optional rules for larger groups, and a chart of plot twists for making your game more interesting! This is a free update available to anyone who already owns the game.<br></p>
<p><strong>General Content Warning:</strong> This game at base contains themes of death, supernatural&nbsp;horror, demons, witchcraft, murder, and other themes of horror. Additional content warnings&nbsp;are detailed in the “example of play” sections that discuss them. TTRPG safety tools are&nbsp;detailed within this game and their use is highly encouraged.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODcucG5n/original/wJIEuz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODYucG5n/original/dGsMv6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODgucG5n/original/l6Vadx.png]]

<p>I released this game on Twitter and someone asked for a copy they could print out so here it is.&nbsp; One page game in which you will show up to an event held by your local representative and yell at them to Do Something.&nbsp; It has a scoring system you can use to compete with your friends and hopefully inspire more people to play, and more importantly for your representatives to actually do something.&nbsp; This was written in response to the mass murders in Dayton, OH and El Paso, TX but applies to so much else that our representatives are failing to do.</p>

[img width=500 [https://img.itch.zone/aW1nLzIzNjYxNDIuanBn/original/dxtKvL.jpg]]
<p>A dodgy boat. A congested canal. Make bank &amp; avoid banks in this meme-y endless runner!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTk5NTgzLzU4NjQ5NDcucG5n/original/TNDIgv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk5NTgzLzU3Njg0MzMucG5n/original/wP6rHf.png]]
<p class="text-center"><strong>DOGS THROWING SWORDS II: Three Barks To The Wind</strong><br></p>
<p>The latest entry in the notorious "Dogs Throwing Swords" series!</p>
<p>The mysterious horned devil ORELIA has been causing mischief in the Dogwoods!&nbsp;Three heroes have been chosen to take a stand, and put an end to her tyranny.</p>
<p>Choose and guide a team of three&nbsp;dogs, and lead those&nbsp;best friends to victory over the devil ORELIA! Each dog has its own unique strengths. Avoid enemy attacks and maximize your firepower by SHIFTING and ROTATING your dogs. Keep them safe as long as possible, so the forest can be free for all once more!</p>
<p>- 4 friends to choose from: Husky, Corgi, Pug, and Pomeranian!<br></p>
<p>- 6 doggone good levels to fight through</p>
<p>- Dog music. I mean good music</p>
<p>- Each dog lovingly hand-pixeled, from nose to tail</p>
<p>Play Dogs Throwing Swords&nbsp;II today, choose a dog, and throw a sword! Now go get it! Aww, who's a good dog! You are!&nbsp;Yes you are!</p>
<p><a href="https://twitter.com/ItsMeLilyV" rel="nofollow noopener">Lily &lt;3</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3ODguZ2lm/original/6WlrmT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3ODcuZ2lm/original/F7nvK%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3NTUucG5n/original/oZVzmO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3NTQucG5n/original/OKmhxS.png]]
<p><em>Doikayt</em>&nbsp;is an anthology of short tabletop roleplaying games about Judaism or Jewish themes, written and illustrated by Jews. It was organized by <a href="http://jrgoldb.itch.io">JR Goldberg</a> and <a href="http://metagame.itch.io">Riley Rethal</a>, featuring 10+ Jewish tabletop games by incredible Jewish designers.</p>
<p>In Yiddish, the word doikayt translates to “hereness”. While hereness can be interpreted in many ways, we take it to mean that a Jewish person’s ideology, practices and traditions are a product of their environment, and it is these differences in background and knowledge from sources around the world that make the Jewish people so stalwart.</p>
<p><em>Doikayt</em> was successfully funded on kickstarter at over 300% of its goal, and now you can preorder it before it goes out to the world&nbsp;&nbsp;in May/June. Learn more about the campaign and the contributors on the <a href="http://bit.ly/doikayt" target="_blank" rel="nofollow noopener">kickstarter page</a>.&nbsp;<br></p>
<p>You can buy the PDF for $12,&nbsp; or you can preorder a physical book by purchasing one of the reward tiers below.&nbsp; A&nbsp;softcover book is $25 + shipping, or a hardcover book is $40 + shipping. US shipping is already included in the price of the rewards, but please keep in mind that <em>international shipping is not</em>. Please add the price specified in the reward description to your purchase if you live outside the US.</p>
<p>There are also many community copies, donated by our generous kickstarter backers, that you can claim if you don't feel like you can afford the cost.&nbsp;</p>
<p>If you'd like to donate additional community copies,&nbsp;&nbsp;one will be added to the pool for every extra&nbsp;$7 added to your purchase.</p>

[img width=500 [https://img.itch.zone/aW1nLzI2NzcyODUucG5n/original/ca5yvp.png]]
<p>In this sequel to 2013's breakout musical hit, <a href="https://squinky.itch.io/pamplemousse" target="_blank">Dominique Pamplemousse in "It's All Over Once The Fat Lady Sings!"</a>, our favourite genderqueer private detective discovers that, through the power of multiple endings from the previous game, they have been cloned! Join the two Dominiques as they traverse surreal locations and interrogate increasingly bizarre characters in order to answer a very important question: which one of them is canon?</p>
<p>There is also plenty of singing. And feelings. And, of course, singing about feelings.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0Mi5wbmc=/original/yXL7wn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0My5wbmc=/original/dELL6%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0NC5wbmc=/original/hivCFt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0NS5wbmc=/original/aIKOJC.png]]
<p>In this unique and offbeat stop motion musical detective adventure game, Dominique Pamplemousse, the titular protagonist, is a down-on-their-luck private investigator of ambiguous gender only one rent payment away from homelessness. When the CEO of a major record company shows up asking Dominique to locate a missing pop star, taking the job appears to be the straightforward thing to do. However, as things are never quite as they seem in these kinds of stories, Dominique winds up framed for a crime they didn't commit, bringing to surface their mysterious past and the events that led them to take up shady detective work in the first place.<br></p>
<p>Oh, and did I mention it's a musical? With singing and everything?</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvODQ4NDcuanBn/original/fXAhzL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvODQ4NDYuanBn/original/HToE7G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvMTAwNDk1LmpwZw==/original/IRUHdD.jpg]]
<p>Don't pay the Ferryman is a Fantasy Espionage roleplaying game based on the Powered by the Apocalypse engine, set in the supernatural fantasy world of Rikirta.&nbsp;</p>
<p>Players create Characters who are explorers, investigators and espionage agents who interact with the setting and story. They have a range of spells and abilities that grow.</p>
<p>Most characters will start in the League of Free States, a collection of theocracies inspired by ancient Babylon and Egypt.<br></p>
<p>- Don't pay the Ferryman is a great on-ramp for those seeking to tell ongoing short or long cooperative stories.&nbsp;
- Explore the moons, world or astral space (there's also&nbsp;&nbsp;room for you to insert your own areas)</p>
<p>- The mixture of Supernatural Mystery, Dungeon Bash and Fantasy Espionage is up to you with player and moderator guides within. - This pack contains maps, an audio overview, creatures, the setting, cheat sheets and everything you need to run the game.<span></span><br></p>
<p>- Come for the pogo-sticks, stay for the ectoplasm.</p>
<p>* 200 page book + Playbooks.</p>
<p>(game was formerly called Conjure Hagalaz)</p>
<p>Podcast-Chatting about the game here -&nbsp;<a href="https://www.gauntlet-rpg.com/1-forward/dont-pay-the-ferryman" rel="nofollow noopener">https://www.gauntlet-rpg.com/1-forward/dont-pay-the-ferryman</a></p>

[img width=500 [https://img.itch.zone/aW1nLzI0MzM4MTMucG5n/original/GdAhFs.png]]
<p>An incredibly difficult platformer that I&nbsp;made in my spare time that I forgot to upload! It's also my first ever Pico8 project, which is an engine that I've grown to love</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxNzkucG5n/original/LqrmgR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODUucG5n/original/PaeQGb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODIucG5n/original/RBXmP3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODMucG5n/original/FU4PEu.png]]
<p>DOORWAYS</p>
<p>Rescue your kitten from an alien force by travelling through portals masked as green doorways.</p>
<p>What lies ahead for our hero? Probably not much good, although that might be up to you.</p>
<p><br></p>
<p>Some gameplay features include...</p>
<p>-High-speed action</p>
<p>-Wall running</p>
<p>-GIBs and gore</p>
<p>-Sketchbook doodles as an art style?</p>
<p>-Eight areas to explore</p>
<p>-28 hidden items</p>
<p>-Dynamic physics</p>
<p>-Original music</p>
<p>-Gamepad support</p>
<p>-Save system</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTEucG5n/original/COgm63.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTQucG5n/original/V86pNy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTMucG5n/original/4V821K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTIucG5n/original/nWf56b.png]]
<p>The first game by Genge Gaming Ltd. is a platformer where you double the number of jumps you have after completing areas. Find the entrances to levels and complete all 8 to finish the game!&nbsp;</p>
<p>There are 3 devlogs for the game you can find at&nbsp;<a href="https://www.youtube.com/channel/UCzaGndvWiurBIjATMu07fxw" rel="nofollow noopener">https://www.youtube.com/channel/UCzaGndvWiurBIjATMu07fxw</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODgzODQzLzUzNDU4ODIucG5n/original/PCKlDA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzODQzLzUzNDU4NzkucG5n/original/6eCQZY.png]]
<p>Double Turn is a pro-wrestling party brawler for up to 4 players. Fight in fast-paced versus matches. Master the simple combat, execute destructive signature moves, and take down your opponent to take home championship gold.<br></p>
<h3>Features</h3>
<ul><li>Brawl in 2-4 player local versus matches</li><li>Test your skills in solo modes and earn a top spot in Battle Royal and Gauntlet matches</li><li>Feel the heat of the crowd in a sold-out stadium</li><li>Take the mantle of one of four pro-wrestlers</li></ul>
<p>Each copy of the game on itch comes with a Steam key. There you can use Steam's Remote Play Together to play online with Steam friends! Please note that the itch version only stores a local copy of top scores in solo modes.</p>
<p><img src="https://img.itch.zone/aW1nLzUyODYwNDguZ2lm/original/x3cjer.gif" loading="lazy"></p>
<h3>Gameplay</h3>
<p>Straightforward controls keeps combat fast and fluid. Approachable to play with your friends, with enough variation to dive deep in wrestling mastery. Strike to throw powerful fists and quick elbows, block to defend against attacks, and throw your foe with classic wrestling maneuvers. Takedown opponents with devastating signature moves. Everything you do is to fuel the heat of the crowd. Whether they love you or hate you, keep the crowd cheering and build up enough momentum to best any fighter. Fighting builds heat, heat charges your signature, and signatures get you championships.</p>
<p><img src="https://img.itch.zone/aW1nLzUyODYwNTkuZ2lm/original/7re7dh.gif" loading="lazy"><br></p>
<h3>Wrestlers</h3>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDAucG5n/original/m8WC66.png" loading="lazy"></p>
<p>The Brawler is a tough-as-nails street fighting heel. Throwing fists and cheap shots, he'll do what it takes to win.
</p>
<ul>
<li> Strikes: Punches, Double-Axe Handle
</li>
<li> Throw: Short-arm Clothesline
</li>
<li> Signature: DDT
</li>
<li> Finisher: Chair Shot</li>
</ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDEucG5n/original/dRwMPF.png" loading="lazy">
</p>
<p>The High Flyer is a high flying masked luchadora. This underdog babyface is always determined and ready for a fight even in the face of bigger badder foes.</p>
<ul>
<li> Strikes: Diving Kick, Pele Kick
</li><li> Throw: Hurricanrana
</li><li> Signature: Dropkick
</li><li> Finisher: Moonsault</li>
</ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDUucG5n/original/naeKLD.png" loading="lazy"></p>
<p>
The Striker deals fierce attacks and is a master of strong style. She is a heel who commands the ring and makes sure her opponents feel the pain.</p>
<ul><li> Strikes: Forearm strikes, Elbow Strikes, Spinning kick
</li><li> Throw: Suplex
</li><li> Signature: Jumping knee strike
</li><li> Finisher: Spinning Heel Kick</li></ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MTIucG5n/original/EJBJNB.png" loading="lazy"></p>
<p>The Showman is a fan favorite babyface who thrives off the cheers of all of his fans. A goody-two-shoes who will always do what's right and is at the face of the company.</p>
<ul>
<li> Strikes: Chop, Cross-chop, Leg drop
</li><li> Throw: Fireman's Carry Takeover
</li><li> Signature: Powerbomb
</li><li> Finisher: Elbow Drop</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ZNF3iyz4bVw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTYucG5n/original/X7Gbcc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTgucG5n/original/gyCKQr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTcucG5n/original/ZbTWm2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTkucG5n/original/jNR7d7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNjAucG5n/original/YT8vq1.png]]

<p>You get to be a dragon<br></p>
<p>You get to kiss dragons</p>
<p>Need I say more?&nbsp; This Tabletop RPG is about&nbsp;about the clash of over-sized personalities between&nbsp;shapeshifters who can assume human or dragon form, or anything in between. It's a GMless—meaning everyone has equal narrative authority—and plays best over one or two 3-4 hour sessions, with 3-4 players.&nbsp;<br><br><strong>What about the Dragons, though?&nbsp;</strong><br><br>What is the fantasy of being a dragon?&nbsp;To me, dragons are interesting because they embody so many seemingly contradictory elements:&nbsp;they are powerful but vulnerable, unyielding but capricious, even tireless-but-sleepy. The one thing they aren't, in this game, is reserved:&nbsp;Dragons' emotions are all turned up to 11, and they aren't afraid to let everyone know exactly how they feel.<br><br><strong>What about the Hearts, though?</strong>&nbsp;<br><br>Notably though, while romance between characters is facilitated by the game and made as safe as possible by included support mechanics, it's also entirely opt-in: you declare on character creation whether your dragon is Open To Romance, and can change your mind at any time.&nbsp;<br><br><strong>And how does this game actually play?</strong><br><br><em>Dragonhearts</em> is made of several small scene types you play for different situations,&nbsp;like if you want to have&nbsp;big cool dragon duels <em>At Each Other's Throats</em>—which may at any moment become liaisons <em>In Each Other's Arms</em>—or change the entire world during <em>Endgame:&nbsp;The Eclipse</em>. Or, more importantly, you can have <em>A Dance</em>!&nbsp;&nbsp;<br><br>Players also collaborate on world-building elements to flesh out some Truths about the world, and can change them later during the endgame!&nbsp;<br><br><strong>How similar is it to Firebrands?</strong><br><br>This game follows the&nbsp;<em>Firebrands&nbsp;</em>Formula developed by&nbsp;Meguey and D. Vincent&nbsp;Baker, and while&nbsp;I was tempted to just "Find <em>Mobile Frame </em>Replace <em>Dragon" </em>I ended up doing... more than that. Most importantly, Dances are 50% longer! Also there are no coin flips or other mechanical randomizers. I've added several new games, and reworked the existing ones a bit to fit the setting.&nbsp;Also, wording and mechanics have been reworked to better facilitate interactions with more than two participants in certain games. <br><br></p>
<p>Generally speaking, one of the consentiest games ever is now even consentier, and more polyamory-friendly and trans-friendly.<br></p>
<p><br><strong>Character Keeper<br><br></strong>Originally written to be played in-person back when we could, uh, do that, I've made an updated Character Keeper to assist with playing this game online! (To find out how to make one for your own game, @GauntletRPG on Twitter has tutorials!)&nbsp;<br><br>You can open the Character Keeper at&nbsp;<a href="https://docs.google.com/spreadsheets/d/1mWJ6PCc0CxLe0POCc-gUTZbI9KhfJlCZ4QrbiiVoB1o/edit?usp=sharing" rel="nofollow noopener">https://docs.google.com/spreadsheets/d/1mWJ6PCc0CxLe0POCc-gUTZbI9KhfJlCZ4QrbiiVo...</a>&nbsp;and then go to File &gt; Make A Copy to get your own instance of it to share and edit!&nbsp;&lt;3<br><br></p>
<p>—Alex<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/yX-_fAnQqlc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0OTAucG5n/original/nrwjt6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTMucG5n/original/GomNVv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTcucG5n/original/gSD5Eg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTkucG5n/original/WkD6Y4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0MDIucG5n/original/ZNVmGS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0MDAucG5n/original/dh%2F%2Fr5.png]]
<h1><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIzNjU2MzUucG5n/original/8FDvWY.png" style="margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></h1>
<p>DragonRuby Game Toolkit&nbsp;is a commercial-grade, yet beginner-friendly, 2D&nbsp;game engine. It's tiny (~3MB), fast as hell, and cross-platform. <strong>The Standard License (this page)</strong> is a one-time purchase and includes support for:&nbsp;PC, Mac, Linux, Raspberry Pi, and Web (wasm).</p>
<p><strong><a href="https://dragonruby.org/toolkit/game#purchase" rel="nofollow noopener">The Professional License</a>&nbsp;</strong><a href="https://dragonruby.org/toolkit/game#purchase" rel="nofollow noopener"></a>includes everything from the Standard License and adds iOS/Android compilation, C Extensions, sound synthesis (eg. chiptunes), pixel buffers, AOT compilation, and an interactive&nbsp;REPL.<br></p>
<table><tbody><tr><td>Updated</td><td><span></span>May 27, 2021, Total releases (so far): 86</td></tr><tr><td>Inception</td><td><span></span>Apr 19, 2019</td></tr><tr><td>Status</td><td><a href="https://itch.io/tools/released">Released</a></td></tr><tr><td>Category</td><td><a href="https://itch.io/tools">Tool</a></td></tr><tr><td>Platforms</td><td>Windows,&nbsp;macOS,&nbsp;Linux, Raspberry Pi</td></tr><tr><td>Rating</td><td><span></span><span></span><span></span><span></span><span></span>★★★★★(71)</td></tr><tr><td>Author</td><td><a href="https://dragonruby.itch.io/">DragonRuby</a></td></tr><tr><td>Tags</td><td><a href="https://itch.io/tools/tag-2d">2D</a>,&nbsp;<a href="https://itch.io/tools/tag-dragonruby">dragonruby</a>,&nbsp;<a href="https://itch.io/tools/tag-game-engine">Game engine</a>,&nbsp;<a href="https://itch.io/tools/tag-moddable">Moddable</a>,&nbsp;<a href="https://itch.io/tools/tag-ruby">ruby</a></td></tr></tbody></table>
<p><strong><br>Free Unrestricted License</strong></p>
<p><strong>You are eligible for a free license if any of the following items pertain to you:</strong></p>
<ul><li><strong>Your income is below $2000 (USD) per month.</strong></li><li><strong>You are under 18 years of age.</strong></li><li><strong>Y</strong><strong>ou are a student of any type: traditional public&nbsp;school, homeschooling, college, boot camp, or online.</strong></li><li><strong>You are a teacher, mentor, or parent who wants to teach a kid how to code.</strong></li><li><strong>You work/worked in public service or at a charitable organization: for example&nbsp;</strong><strong>public office, army, or any 501(c)(3) organization.</strong></li></ul>
<p><strong>Just contact Amir at&nbsp;ar@amirrajan.net with a short explanation of your current situation and he'll set you up. No questions asked.&nbsp;&nbsp;</strong></p>
<h1>So what's so great about DragonRuby Game Toolkit?</h1>
<ul><li>Dirt simple apis&nbsp;capable of&nbsp;creating&nbsp;complex 2D games.</li><li>Fast as hell. Powered by highly optimized C code written by Ryan C. Gordon, one of the juggernauts behind&nbsp;SDL (a library that powers&nbsp;<em>every</em>&nbsp;commercial game engine in the world).</li><li>Battle-tested by Amir Rajan, a critically acclaimed indie game dev with titles built with DragonRuby&nbsp;on mobile and the Nintendo Switch.</li><li>Tiny. Like really tiny. The entire engine is a few&nbsp;<em>megabytes</em>.</li><li>Hot loaded, real-time coding, optimized to provide constant feedback to the dev. Productive and an absolute joy to use.</li><li>Turnkey builds for Windows, macOS, and Linux with seamless&nbsp;publishing to Itch.io.</li><li>Cross-platform: PC, Mac, Linux, Raspberry PI, Web, iOS, Android, Nintendo Switch, XBOX One, and PS4 (mobile requires a Pro License, and console compilation requires a business entity, and NDA verification; contact us at support@dragonruby.org for more info).</li></ul>
<p>Ryan put together a 5-minute intro to DragonRuby GTK, to give you a whirlwind tour of the big ideas:</p>
<div class="text-center">
<iframe width="560" height="315" src="https://www.youtube.com/embed/DYBRzglsEzU" frameborder="0" allowfullscreen=""></iframe></div>
<h1>Hello World is one file, three lines.</h1>
<p>This is all you need to create a game. One file. One method called&nbsp;<code>tick</code>. Here we render the&nbsp;current step value as a label:</p>
<pre>def tick args  
  args.outputs.labels &lt;&lt; [100, 100, args.state.tick_count]
end
</pre>
<p>That's it. If you know how to use the&nbsp;<code>array</code>&nbsp;datatype in&nbsp;<em>any</em>&nbsp;language, you know how to use the DragonRuby Game Toolkit.&nbsp;<a href="http://fiddle.dragonruby.org/index.html?tutorial=tutorial-primitives.html" target="_blank" rel="nofollow noopener">Play around with the engine&nbsp;in your browser.</a>&nbsp;</p>
<p>You can skim our documentation <a href="http://docs.dragonruby.org" rel="nofollow noopener">here</a>&nbsp;if you need more details<strong></strong>.</p>
<h1>Output: Six rendering primitives are all you need.</h1>
<p>Here are the six draw primitives you need to know:&nbsp;<code>solids, sprites, labels, lines, borders, and sounds</code>. Here is how you use them:</p>
<pre>def tick args    
  # draw a blue square that's half way faded out
  args.outputs.solids &lt;&lt; [100, 100, 50, 50, 0, 0, 255, 128]
  # draw a red label
  args.outputs.labels &lt;&lt; [100, 100, "This is a label.", 255, 0, 0]
  
  # draw a sprite turned 45 degrees and half way faded out
  args.outputs.sprites &lt;&lt; [200, 200, 50, 50, 'ninja.png', 45, 128]
  
  # draw a diagonal green line from bottom left to top right
  args.outputs.lines &lt;&lt; [0, 0, 1280, 720, 0, 255, 0]
  
  # draw a black border (unfilled square)
  args.outputs.borders &lt;&lt; [100, 100, 50, 50, 0, 0, 0, 255]
  
  # play a sound every second
  args.outputs.sounds &lt;&lt; "ping.wav" if args.state.tick_count % 60 == 0
end</pre>
<p>That's it. You now know the entire render API for DragonRuby GTK.</p>
<p>Here's a more complicated example.&nbsp;This is how you create a nighttime scene, with a title, and a ninja:</p>
<ol><li><code>solids</code>: A black background, and two hundred stars made of tiny squares.</li><li><code>labels</code>: Display some smokey-white text.</li><li><code>sounds</code>: Play a sound when the game starts up.</li><li><code>sprites</code>: Render a sprite on the screen.</li><li><code>lines</code>: Draw a line representing the floor</li><li><code>borders</code>: Frame the entire scene&nbsp;with a white border.</li></ol>
<pre>def tick args  
  # destructure args into local variables  
  state, outputs, grid = args.state, args.outputs, args.grid  
  # set some default values for the game  
  state.colors.background ||= [0, 0, 0]  
  state.colors.star       ||= [128, 200, 255]  
  state.colors.text       ||= [200, 200, 200]  
  state.colors.landmarks  ||= [255, 255, 255]  
  state.night             ||= [grid.rect, state.colors.background]  
  state.stars             ||= 200.map do
    [rand * grid.w,
     rand * grid.h,
     rand * 2 + 2,
     rand * 2 + 2,
     state.colors.star]
  end
  # start up some background music
  outputs.sounds  &lt;&lt; "opening_fx.wav" if state.tick_count == 0
  # render the background and stars
  outputs.solids  &lt;&lt; state.night
  outputs.solids  &lt;&lt; state.stars
  # set a title for the game
  outputs.labels  &lt;&lt; [grid.left + 50, grid.top  - 50,
                       "Ninja Game", state.colors.text]
  # set a sprite
  outputs.sprites &lt;&lt; [50, 50, 50, 50, 'ninja.png']
  # create a line that represents the ground
  outputs.lines   &lt;&lt; [grid.left,
                      grid.bottom + 50,
                      grid.right,
                      grid.bottom + 50,
                      state.colors.landmarks]
  # create a border to frame the game
  outputs.borders &lt;&lt; [grid.left + 1,
                      grid.bottom + 1,
                      grid.right - 1,
                      grid.top - 1,
                      state.colors.landmarks]
end</pre>
<h1>Input: Controllers, Mouse, and Keyboard.</h1>
<p>This is how you move a sprite using your gamepad:
</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites &lt;&lt; [args.state.ninja.x, 300,
                         50, 50,
                         'ninja.png']
if args.inputs.controller_one.key_held.right
  args.state.ninja.x += 10
elsif args.inputs.controller_one.key_held.left
  args.state.ninja.x -= 10
end
</pre>
<p>This is how you move a sprite using your mouse:
</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites &lt;&lt; [
   args.state.ninja.x,
   300,
    50,
    50,
    'ninja.png'
]
if args.inputs.mouse.click
    args.state.ninja.x = args.inputs.mouse.click.point.x
end</pre>
<p>This is how you move a sprite using your keyboard:</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites &lt;&lt; [
  args.state.ninja.x, 300, 50, 50,
  'ninja.png'
]
if args.inputs.keyboard.key_held.right
  args.state.ninja.x += 10
elsif args.inputs.keyboard.key_held.left
  args.state.ninja.x -= 10
end</pre>
<h1>Game State: Entities and Collision.</h1>
<p>Randomly create 500&nbsp;ninjas on the screen. Create a lookup table that contains the alpha property of ninjas that have collided. Present all ninjas with their alpha properties set.</p>
<pre>def tick args  
  # destructure args into local variables
  grid, state, outputs = args.grid, args.state, args.outputs
  # use Game Toolkit's built in helper methods to create
  # adhoc entities
  state.ninjas ||= 500.map do
    state.new_entity(:ninja,
                     rect: [grid.w.-(50) * rand,
                            grid.h.-(50) * rand,
                            50,
                            50])
  end
  # use Ruby's powerful apis to determine collision
  state.collisions ||= state.ninja
                            .product
                            .reject { |n, n2| n == n2 }
                            .find_all { |n, n2| n.rect.intersects_rect?(n2.rect) }
                            .map { |n, _| [n.entity_id, 128] } 
                           .pairs_to_hash
  #render everything to the screen
  outputs.sprites &lt;&lt; state.ninjas.map do |n|
    [n.rect, 'dragonruby.png', 0,
     state.collisions[n.entity_id] || 255]
  end
end</pre>
<h1>Support for aspiring game devs.</h1>
<p>Need a bit more guidance in learning how to program?&nbsp;We're starting to build training videos for DragonRuby GTK. Check those out at&nbsp;<a href="http://dragonruby.school/" target="_blank" rel="nofollow noopener">dragonruby.school</a>.</p>
<h1>The developers behind DragonRuby GTK.</h1>
<p>This is Ryan C. Gordon (<a href="https://en.wikipedia.org/wiki/Ryan_C._Gordon" rel="nofollow noopener">Wikipedia</a>), he is one of the juggernauts behind Simple DirectMedia Layer (<a href="https://en.wikipedia.org/wiki/Simple_DirectMedia_Layer" rel="nofollow noopener">Wikipedia</a>).&nbsp;</p>
<p>Ya know...&nbsp;</p>
<p>SDL.</p>
<p>that low-level library that&nbsp;<strong>powers literally every commercial game engine out there</strong>?&nbsp;</p>
<p>He's also worked on porting a number of games to Linux and Mac OS: such as Braid, Super Meat Boy, Dear Esther, and LIMBO.</p>
<p><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIwMTM3NDkucG5n/original/Z%2F%2Fpmx.png" style="max-width: 100%; margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></p>
<p>And this is Amir Rajan, he is an indie game dev with titles on iOS, Android, desktop,&nbsp;and Nintendo Switch...&nbsp;<strong>amassing 4 million downloads and counting</strong>&nbsp;(<a href="https://www.nintendo.com/games/detail/a-dark-room-switch/" rel="nofollow noopener">Nintendo</a>,&nbsp;<a href="https://killscreen.com/articles/ensign/" rel="nofollow noopener">Kill Screen</a>,&nbsp;<a href="https://www.newyorker.com/tech/annals-of-technology/a-dark-room-the-best-selling-game-that-no-one-can-explain" rel="nofollow noopener">The New Yorker</a>). And yes, all these games are built with the DragonRuby Runtime.</p>
<p><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIwMTM3NTAuanBn/original/jrb8Tz.jpg" style="max-width: 100%; margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></p>
<p><strong>Both of these guys hate the complexity of today's engines.&nbsp;</strong>And as luck would have it, their paths ended up crossing. After six months and 50,000 lines of DragonRuby Runtime enhancements,&nbsp;Ryan and Amir now have a live/hot loadable, cruft-free, productive game engine&nbsp;that can target... well... any gaming device you can think of.&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DYBRzglsEzU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzIzNjU2MzQucG5n/original/WFWBHQ.png]]
<p>The first official publication for Dragons of Tirenia, this introductory guide and adventure module features:<br></p>
<p>- The adventure&nbsp;<em>Double Cross</em>:&nbsp;intrigue, spies, embezzlement, a cathedral heist, and a cart chase in downtown Fiumenze!</p>
<p>- A brief outline of the key characteristics, geography and history of Tirenia, including a country map</p>
<p>- Lineage and class summaries to cover the standard characters that can be created in the fifth edition of the world's biggest roleplaying game</p>
<p>- Access to online resources including full-size encounter map images, sequel hooks and pre-generated characters</p>
<p>The document is 40 pages long: cover page, glossary&nbsp;and back page, 10 pages of setting introduction, 27 pages of adventure and related resources. Please note, the guide is intended for use with the core rule set of the fifth edition of the world's biggest roleplaying game.</p><p>To learn more about our plans for this setting please visit <a href="http://www.skybeargames.com" target="_blank" rel="nofollow noopener">www.skybeargames.com</a></p>
<p>The full campaign setting will be Kickstarted in 2021. Watch this space!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTYucG5n/original/djffeb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTUucG5n/original/RTzAZp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTQucG5n/original/1k%2BnNY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTMucG5n/original/DBLXHi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTIucG5n/original/fsIb5I.png]]
<figure><p>Drawkanoid is a neon-drenched love letter to brick breaking games. We took out all the boring bits, like paddles, and turned everything up to 11! The ball moves at hyperspeed, shattering everything into explosion-filled eyecandy. Bullet time lets you react at the speed of thought. Deploy powerups to go into full ludicrous mode, or unlock Countdown and Zen modes to up the tension or zone out and smash.<br></p><p class="text-center"><img src="https://img.itch.zone/aW1nLzI5MDAzMDIuZ2lm/original/vDi0S0.gif" loading="lazy"></p></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AiKbUyZQvNc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjEuanBn/original/qb0HQc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjcuanBn/original/Uv%2F5KG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjUuanBn/original/g%2Furf1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjMuanBn/original/TIXfcM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjQuanBn/original/L0FajP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjYuanBn/original/LMpyQC.jpg]]
<p>You are beginning your very first year at the magical academy, hoping to learn more about magic, make friends and grow into a better witch and a better person. Sounds easy, right?
</p>
<p>This is a roleplaying game, and I expect you're familiar with those, but&nbsp;<strong>Dream Abloom</strong>&nbsp;is different from other roleplaying games. In the vein of games like&nbsp;<strong>Dream Apart&nbsp;</strong>and&nbsp;<strong>Dream Askew</strong>, this game asks you to forget about dice and GMs - it is a fully collaborative storytelling and worldbuilding game meant to tell stories of coming of age, heartbreak, friendship, love, levity in the face of grim seriousness and hope in the face of adversity.&nbsp;
</p>
<p>Playing without dice and without a GM can seem daunting at first but is in fact very easy, and this game includes rules for structuring play a little more rigidly - especially useful when it's hard to come up with ideas for scenes.
</p>
<p>This is the very first edition of the game - basically a fully playable ashcan edition, with only some basic layout and no art other than the photo on the cover, which I am offering at a low price point (with some Community Copies, of course), hoping to use the proceeds from the game to pay for artists, a professional layout and editors. Everyone who buys this edition or gets a community copy&nbsp;will automatically receive the upgraded edition at no cost the moment it's out.<br></p>
<p>Every sale of the book will make one more community copy available. Thank you all so much for supporting me.</p>

[img width=500 [https://img.itch.zone/aW1nLzU5NTk1MzgucG5n/original/dnUKtL.png]]
<p class="text-center"><u>Dream Dye</u><br></p>
<p class="text-center">A 2D puzzle platformer in which you delve into dreams and mix colours to dye objects,&nbsp; in a world where colours are a pigment of the imagination.</p>
<p class="text-center">Dream Dye takes place in a doctor's office in the&nbsp;fictional village of Renkaya, a relatively normal village with just one strange difference – the only way to “make” colour is to dream about it.&nbsp;</p>
<p class="text-center">In Dream Dye, you play as the village’s new Dream Doctor, a doctor who has the ability to travel into dreams and fix problems the villagers are having by completing different colour-themed platformer puzzles whilst in the form of a “dream blob”.</p>
<p class="text-center">Dream Dye is a game created by me for my final year game project at&nbsp;university,&nbsp; with audio help from George Ricci and general help and assistance from my lecturers - Ste Curran, Andy Lemon, Robert Ramsay, Paul Sinnett, and Lara Lema.&nbsp;</p>
<p class="text-center"><strong><u>(NOTE: Any feedback to improve the game will be greatly appreciated, thank you in advance!)</u></strong></p>
<p><strong></strong></p>
<p><u>Controls:</u></p>
<p><em>A/D</em> to move</p>
<p><em>SPACE</em> to jump</p>
<p>Jump towards a wall and press space to<em> WALL JUMP</em></p>
<p><em>q</em> to switch between blobs</p>
<p><em>R </em>to reset the level</p>
<p><em>ESC </em>to pause/exit</p>
<p><br></p>
<p><u>Credits:</u></p>
<p>Main Developer -&nbsp;<strong>Semra Usanmaz </strong>– Art, Design, Code etc. (also made most of the sound effects)&nbsp;</p>
<p>Audio Designer - <strong>George Ricci</strong> – Made all of the background music as well as a few of the sound effects, also helped with some of the playtesting.&nbsp;</p>
<p>Gradient Shader – <strong>Robert Ramsay&nbsp;</strong></p>
<p>Additional Support and advice:&nbsp;<strong>Ste Curran, Andy Lemon, Robert Ramsay, Paul Sinnett, Lara Lema</strong></p>
<p>Play-testers: <strong>George Ricci, Fin Miller, Katie Wright, John Bates, Alex Bates, Harry Bushell&nbsp;</strong></p>
<p>Font name: "Tye-Dye Jerky"&nbsp;</p>
<p><br></p>
<p>Time it takes to complete the game (not 100% complete) -&nbsp;around 10 - 15 mins</p>
<p>Time it takes to complete the game (100% complete) - around 20 - 30 mins</p>
<p class="text-center"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzE3LnBuZw==/original/x9Cxbv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzg0LnBuZw==/original/xZ%2B1xN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzg3LnBuZw==/original/o58HSz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzIwLnBuZw==/original/pm6Ra4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzQ4LnBuZw==/original/l8hIFY.png]]
<figure><strong><img src="https://img.itch.zone/aW1nLzQ5ODE5OTkucG5n/original/OgY%2Btd.png" loading="lazy"></strong></figure>
<p><strong>Riza Wolfe is the kind of person often referred to as a daydreamer.</strong>&nbsp;With her high school days approaching an end quicker than she would like, and the threat of a mundane adult life looming over her, she’s always wondering if there’s something more out there.</p>
<p>As it turns out, there is.</p>
<p>After receiving&nbsp;an unassuming dream catcher as a gift one day, Riza soon finds herself following a character she thought she’d made up through a mysterious nexus realm and into a parallel world, where she is supposedly one of seven “Dreamers” of legend. She gets what she’s always wanted–an adventure, and a greater purpose…sort of. The problem is, no one seems to know exactly&nbsp;<em>why</em>&nbsp;the Dreamers are there, just that it means something very, very bad is coming. It’s up to Riza, her new werewolf guardian, Luna, and the assortment of companions they collect along the way to unite with the other Dreamers, and figure out why they were summoned…before it’s too late.&nbsp;</p>
<p>Follow Riza around the map as she chases destiny...or maybe it chases her.</p>
<p>This is the complete first volume of the series, which features updated versions of Chapters 1-5, plus a bonus story. If you'd rather read the beta versions, you can start with Chapter 1 for free <a href="https://hazumirein.itch.io/dreamcatcher-reflections-chapter-1">here</a>.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5ODE5OTEucG5n/original/55qOfH.png" loading="lazy"><br></p>
<p><strong>FEATURES:</strong></p>
<ul><li>Chapters 1-5 of the series, plus an exclusive bonus story.</li><li>New GUI design.</li><li>Complete art gallery with around 250 CGs, plus concept art.</li><li>Updated character sprites with a huge library of expressions and poses.</li><li>Large cast of colorful characters and creatures, each with their own quirks, secrets, and dynamics with others--you're sure to find a favorite (or two) as the story progresses!</li><li>Magic, monsters, and mayhem--a grand adventure in a parallel world with plenty of action to be seen and lore to be discovered.</li><li>A story about growing up, and maybe also saving the world--inspired by JRPGs and isekai anime.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ5ODIxODkucG5n/original/bBXtWs.png" loading="lazy"><br></p>
<p><strong>NOTES &amp; LINKS:</strong></p>
<p>This is a <strong>kinetic nove</strong><strong>l </strong>series adapted from a webcomic--there are no choices to make or alternate endings to unlock; just sit back and enjoy the story!</p>
<p>You can check out our actual website at&nbsp;<a href="http://www.dreamcatcherreflections.com/" rel="nofollow noopener">www.dreamcatcherreflections.com</a>!</p>
<p>You can also follow the creator on Twitter&nbsp;<a href="https://twitter.com/SkelebunStudios" rel="nofollow noopener">@SkelebunStudios</a>&nbsp;for updates and previews of upcoming chapters!</p><p>DreamCatcher: Reflections Volume 1 is <a href="https://store.steampowered.com/app/1520570/DreamCatcher_Reflections_Volume_1/" target="_blank" rel="nofollow noopener">coming soon to Steam</a>! Wishlist it now!</p>
<p><img src="https://img.itch.zone/aW1nLzQ5ODE5OTUucG5n/original/yivESw.png" loading="lazy"><br></p>
<p><strong>A Note About The Android Version: </strong>While the mobile version of the game is fully functional, it wasn't originally built for small screens, and I would recommend the PC/Mac version for users that may have trouble reading small text.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6coc8MdBpYM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTcucG5n/original/xmLZJF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTYucG5n/original/%2FECVcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTkucG5n/original/z%2Bkajq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjAucG5n/original/LTZq1A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjEucG5n/original/YvFp0%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjIucG5n/original/cFrrGL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjUucG5n/original/vFm2UR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjMucG5n/original/HmAYJS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjQucG5n/original/et1LCw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjcucG5n/original/0U3ZHn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjYucG5n/original/wIZFGI.png]]
<p><strong>Dredge</strong> is an exploration-based journaling game about sailing through an enormous lake known as the Wringwaste, hauling up mysterious items from its depths as you go, while struggling to regain the memories you've lost.&nbsp;</p>
<p>Throughout the course of the game, you will unearth a plethora of odd items, evade a malevolent denizen of the deep, and&nbsp;reveal a great mystery&nbsp;about the Wringwaste itself.<br><br>Dredge is written to be a solo experience, but the game can be played by multiple people taking on the role of the boat's cramped crew.<br><br><strong>To play this game you will need:</strong> A deck of cards, two distinct-looking tokens, and a notebook or other method of writing journal entries.<br><br><strong>This download contains:&nbsp;</strong>A complete rulebook, including instructions for play and&nbsp;52 card-based prompts over 31 pages (about 5000 words total).<br><br>This game was built using the <a href="http://peachgardengames.itch.io/carta-srd" target="_blank">Carta SRD</a>, by Peach Garden Games.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzIucG5n/original/c%2FnGp7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzAucG5n/original/9EpJvO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzEucG5n/original/A6lELz.png]]

<h3><p><em>"Dystopicon teaches you that capitalism sells you dreams at the price of nightmares</em>." - <a href="https://www.mundogamers.com/noticia-dystopicon-te-ensena-que-el-capitalismo-te-vende-suenos-a-precio-de-pesadillas.22216.html" target="_blank" rel="nofollow noopener">MundoGamers</a></p>
<p><em>"Have you seen how few resources are needed to talk about capitalism, technological isolationism and the extreme individualization of a society in which communities are lacking?" - <a href="https://niveloculto.com/dystopicon-en-la-caja-tonta" target="_blank" rel="nofollow noopener">Nivel Oculto</a></em><br></p>
<p><em>"It’s an interesting little game with multiple endings and a offers a dark analogy for how governments (not just authoritarian ones) try to control the public via media. Will you be a bood, compliant citizen?"&nbsp; - <a href="https://www.freegameplanet.com/dystopicon-download-game/" target="_blank" rel="nofollow noopener">Free Game Planet</a></em><br></p>
<p>"<em>Dystopicon: television, capitalism and dystopia</em>" - <a href="https://www.devuego.es/blog/2019/08/12/dystopicon-television-capitalismo-y-distopia/" rel="nofollow noopener">DeVuego</a></p>
<p>"<em>Exploring the criticism of capitalism in Dystopicon</em>" - <a href="https://www.devuego.es/blog/2019/09/09/explorando-la-critica-al-capitalismo-en-dystopicon/" rel="nofollow noopener">DeVuego</a></p>
</h3>
<p><br></p>
<p>EDIT:&nbsp;We want to know your opinion about the game. Could you fill out this anonymous survey?</p>
<p><a href="https://docs.google.com/forms/d/1_7m7dnLglS9VkOhskHZtd9icHWFUi-hwO7rL83RF3is/viewform?edit_requested=true" rel="nofollow noopener">https://docs.google.com/forms/d/1_7m7dnLglS9VkOhskHZtd9icHWFUi-hwO7rL83RF3is/viewform?edit_requested=true</a><br></p>
<p>If you find any bug or problem please send us an email to games@over-software.com<br></p>
<p>---------------------------------------------------------------------------------------------</p>
<p>In Dystopicon the players will live in a dystopian society in which they receive money in exchange to watch&nbsp;TV. With that money they pay services to cover their basic needs.&nbsp;Throughout the game they will discover the details of this dystopia in which the government monitors your movements but gives you freedom of choice.<br></p>
<p>The story will be told through gameplay, texts and comics. Take your time to explore the different objects and&nbsp;the mechanics in your first day.</p>
<p>This game is inspired by the classic novels <em>1984</em>, <em>A Happy&nbsp;World</em> and <em>Ubik</em>.</p>
<p>If you find any bug or problem please send us an email to games@over-software.com<br></p>
<p>Thank you for playing&nbsp;Dystopicon!<br></p>
<p>Justice and work!</p>
<p>---------------------------------------------------------------------------------------------<br></p>
<p>Game design, code, music and story: J. Felipe Molina</p>
<p>2D art, and texts reviewer: Mario Alba</p>
<p>Languages available: English, Spanish<br></p>
<p>Presskit():&nbsp;<a href="http://over-software.com/Presskit/sheet.php?p=dystopicon" rel="nofollow noopener">http://over-software.com/Presskit/sheet.php?p=dystopicon</a></p>
<p>Follow us:<br></p>
<p>Twitter:&nbsp;<a href="https://twitter.com/OveR_Software" class="" rel="nofollow noopener"><span class="" dir="ltr">@<span class="">OveR_Software</span></span></a><br>Facebook;&nbsp;&nbsp;<a href="https://www.facebook.com/OveRSoftware/" rel="nofollow noopener">https://www.facebook.com/OveRSoftware/</a></p>
<p>Website: <a href="http://www.over-software.com" rel="nofollow noopener">http://www.over-software.com</a></p>
<p>Important!&nbsp;<br></p>
<p>If you have problems to unzip and run the application on Mac, try another compression program.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xUo6owPP2rQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMTM1ODMuZ2lm/original/%2F3PAcv.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjQuanBn/original/IR2moq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMTM1MDAuanBn/original/%2BbHFFf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjcuanBn/original/7nyY1G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjguanBn/original/Uh0%2FF2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMjcxNDcuanBn/original/oWa0ZX.jpg]]
<p><em></em>Eatvolve is an evolutionary eat-em-up, elevating a lowly worm to the ultimate hybrid organism by gobbling up other critters - and stealing their unique abilities! Freely explore a colourful world of adorable, edible animals and combine their powers to find new ways to get around, powerful attacks, and more. Be careful, though: only one species can be the pinnacle of evolution, and competition is fierce!<br><span></span></p>
<p>many controllers are supported,&nbsp;</p>
<p>wasd&nbsp; &amp; arrow keys&nbsp; - Movement<br>S &amp; Down Arrow&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;-&nbsp;&nbsp;Eat and Dig<br>space&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- Attack<br>P /&nbsp; ESC&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;-&nbsp; Pause menu</p>
<p>I have uploaded a new&nbsp; - in&nbsp;development build of Eatvolve&nbsp; priced at $5<br>I appreciate your support! this helps me to work on improving Eatvolve.<br>WARNING -&nbsp; There are many bugs in this version!<br><br>Once Eatvolve is complete, any purchase will have access to the full version!<br>I will also raise the price of Eatvolve at this time!&nbsp;</p>
<p><span></span></p>
<p>Music by coda - <a href="https://twitter.com/codatrigger" rel="nofollow noopener">https://twitter.com/codatrigger</a></p>
<p>comments &amp; suggestions welcome 😊<br><a href="https://twitter.com/papadar_" rel="nofollow noopener">https://twitter.com/papadar_<br>https://discord.gg/DF7TZEr<br></a><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMjk4NzQ5NS5naWY=/original/Xu1QU0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2My5wbmc=/original/Ox3oIj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2MS5wbmc=/original/TAGF0h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2Mi5wbmc=/original/n7zxXd.png]]
<p>This is from the Disasterpeace Music Weeklies challenge. The challenge was to make a track for an existing OST and I picked The Division. I thought up this whole new activity in some non-existent patch where you climbed an endless dungeon tower. I called it Eclipse Protocol.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bXanmwTKVi4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU2NjMxMjEucG5n/original/ezE%2Bnu.png]]
<p><strong>EDDIE HILL&nbsp;in The Curse of the Skull Medallion</strong>&nbsp;is an hardcore platformer inspired by&nbsp; the likes of&nbsp;Celeste and Super Meat Boy.</p>
<p>In this adventure, Eddie must retrieve the Skull Medallion sitting atop a mountain walled by a perilous jungle and an ancient temple full of dangers.</p>
<p>The levels in this game&nbsp;were designed by&nbsp;students&nbsp;during a level design workshop I held&nbsp; in March 2021.</p>
<p><strong>Features:</strong><br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;16 levels split in 3 worlds.<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;Collectibles<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;A SpeedRun mode.<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;Loads of deaths<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;Spikes<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy">&nbsp;Bad jokes</p>
<p><strong>Default Controls:</strong><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MjA4MTYucG5n/original/9oZoWZ.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4MTcucG5n/original/efvlQ%2F.png" loading="lazy">&nbsp;Movement<br><img src="https://img.itch.zone/aW1nLzU1MjA3ODcucG5n/original/DtoF2I.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU2MTQ2NDAucG5n/original/c%2Bh9g9.png" loading="lazy">&nbsp;Jump,&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4MDQucG5n/original/rO%2Btyf.png" loading="lazy">&nbsp;to jump further<br><img src="https://img.itch.zone/aW1nLzU1MjA4MTgucG5n/original/8GH8q9.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU2MTQ4MDgucG5n/original/iORLap.png" loading="lazy">Dash +&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4MjkucG5n/original/YTWLm4.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4MzQucG5n/original/aFmaj9.png" loading="lazy">&nbsp;for Dash Direction<br><img src="https://img.itch.zone/aW1nLzU1MjA4NDYucG5n/original/emoYmk.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4NTAucG5n/original/fm2aBv.png" loading="lazy">&nbsp;Pause<br><img src="https://img.itch.zone/aW1nLzU1MjA4NTMucG5n/original/Lwq7sy.png" loading="lazy">&nbsp;/&nbsp;<img src="https://img.itch.zone/aW1nLzU1MjA4NTYucG5n/original/1F6x2k.png" loading="lazy">&nbsp;Cancel<br></figure>
<p><strong>Soundtrack :</strong></p>
<p><iframe src="https://audiomack.com/embed/album/dustin-680/eddie-hill-in-the-curse-of-the-skull-medallion-original-game-soundtrack?background=1" scrolling="no" width="100%" height="400" frameborder="0"></iframe></p>
<p><strong>Follow us :</strong></p>
<p>Gameinaframe :<br>twitter :&nbsp;<a href="https://twitter.com/gameinaframe" rel="nofollow noopener">https://twitter.com/gameinaframe<br></a>Discord :&nbsp;<a href="https://discord.gg/rdG8Wh7" rel="nofollow noopener">https://discord.gg/rdG8Wh7</a><br><br>Vincent Joyau (Design, Art, Dev) :&nbsp;<a href="https://twitter.com/VJoyau" rel="nofollow noopener">https://twitter.com/VJoyau</a><br>Dustin Crenna (Composer) : <a href="https://twitter.com/Crebbs" rel="nofollow noopener">https://twitter.com/Crebbs</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/yyufmGmPv14" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzUucG5n/original/T6kr3w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzYucG5n/original/DWvp3a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzcucG5n/original/wHVRV%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzgucG5n/original/hYuH4K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzkucG5n/original/E8CCcN.png]]
<p><em>An old nightmare returns.</em></p>
<p>Solana Academy is a prestigious all-girl boarding school in a remote corner of Japan. Despite its distance from major cities, it never wants for students or funding.</p>
<p>However, the ideal school life at Solana Academy is disrupted by the sudden appearance of grotesque monsters from the formerly sealed-off old dormitory. A chance discovery of magical “petals” leaves four students as the only line of defense against this threat. But as the girls investigate the old dormitory for a way to be rid of the monsters, they begin to uncover a sinister truth regarding their school…</p>
<p><em>This story is continued in <a href="https://jackkel-dragon.itch.io/eldritch-university" target="_blank">Eldritch University</a>.</em></p>
<hr>
<h2>Features</h2>
<ul><li>A romance/paranormal thriller visual novel with horror elements. Yue's choices determine who she becomes close to as she investigates the secrets of her school.</li><li>Three dateable characters and five total ending routes. And if Yue is not careful with her choices, she may not even survive the ordeal.</li><li>A series of bonus stories after completing the main game. These stories expand on certain endings or characters, or explain details that were kept hidden in the main story.</li></ul>
<hr>
<h2>Characters</h2>
<h3>Yue Ishikami</h3>
<p>A first-year at Solana Academy that has few friends due to her abrasive and standoffish personality. She tends to discount the worth of others, assuming herself to be smarter or more knowledgeable. Bad experiences in the past have turned Yue away from looking for friends and made her wary of "nerdy" activities like cosplay.</p>
<h3>Akomi Miyazaki</h3>
<p>Akomi is known for two things: enjoying food and making perverted comments. She seems to be able to make a lewd joke from just about anything, even making attempts when the result isn't particularly funny. While she rarely ventures into outright harassment, Akomi is still avoided by most other first-years.</p>
<h3>Cho Fukuda</h3>
<p>Some of the other first-years at Solana Academy assume Cho is a tomboy because she wears the uniform pants, not realizing that she converted most of her skirts into costume parts. Cho has a fairly naive view on how people should behave, which can cause friction with more cynical or realist classmates like Yue.</p>
<h3>Kagami Nakayama</h3>
<p>A first-year student that&nbsp;often wears a scarf, even when it isn’t cold. Kagami is usually quiet, and when she does talk she tends to use formal address and a carefully selected vocabulary. Because of the otherwise relaxed environment at Solana Academy, other students can find Kagami's formality uncomfortable.</p>
<h3>Kasumi Kawamura</h3>
<p>A first-year student at Solana Academy that&nbsp;prefers spending time with her friends to studying. She has a reputation for being an airhead, as her lack of focus often leaves her falling behind in class and ignoring social cues. She spends a lot of time with Yue, to the latter's annoyance.</p>
<h3>Misaki Asahara</h3>
<p>A second-year at Solana Academy. Misaki has known Kasumi for years, and they have recently begun dating. She is outgoing and friendly, always looking for new friends.</p>
<h3>Junka Fujikawa</h3>
<p>An instructor at Solana Academy. While young, she is a competent teacher and does her best to make sure her students do well in their classes. Outside of teaching, she has a lot less experience.</p>
<h3>Machi Hirata</h3>
<p>The school nurse at Solana Academy. While she acts cold and cynical, she doesn’t hesitate to help students that come to her for treatment. She is a lot younger than her personality would suggest.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4XDGd3XAVlg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzEyNDA1MjcucG5n/original/4OX4FL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzEyNDA1MjgucG5n/original/w01Oq3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzEyNDA1MjkucG5n/original/%2Ba3%2BM5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzEyNDA1MzAucG5n/original/20dZb9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjIucG5n/original/87mR7Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjMucG5n/original/TNm6eW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjUucG5n/original/IqzWVy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjYucG5n/original/blsSmV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjQucG5n/original/y9j8q4.png]]
<p><br></p>
<p><br></p>
<p>Elephants are being hunted to extinction by devious hunters.&nbsp;Do your duty and put a stop to it with your trusty space laser!</p>
<p>As you progress in your defence of the kind-natured pachyderms unlock and upgrade five extra tools to help in your mammoth task. You'll need them as hunters never&nbsp;play fair!</p>
<p>This is my first release on Itch so please let me know if you encounter any bugs!</p>
<p><strong>Controls:</strong><br></p>
<ul><li>Look around with the [Mouse]</li><li>Fire Laser/Use Ability with the [Left Mouse button]</li><li>Select Ability with [Number] keys</li><li>Access Pause menu with [Escape] key</li><li>Mute sound with [M] key</li></ul>
<p><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTUucG5n/original/WZAT3x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzE4NDA4MDcuZ2lm/original/plzzMC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzE4NDA4MDguZ2lm/original/Ma0RDd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTYucG5n/original/dqTz74.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTcucG5n/original/xXW384.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTgucG5n/original/cWt4ba.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTkucG5n/original/abQnYx.png]]
<p><img src="https://img.itch.zone/aW1nLzQ3MjY1MzEucG5n/original/7aBotX.png" loading="lazy"></p>
<p><em><br></em></p>
<p><em>It's said that somewhere, hidden from all but the most determined explorers, there is a miniature world where one may go to escape the worries of life. After falling from the sky, you've found yourself in that very same miniature world. But now that you're there, can you ever return home again? <br></em></p>
<p><em>Snorri, the resident Wizard of the miniature world, has told you of a mysterious Tower in the Sky above his shop. Perhaps if you can collect enough Gems, you can reach the Tower, and with any luck, get back home!</em></p>
<p><strong><em>Elephantasy</em></strong> is a small exploratory puzzle-platforming game where you play as a tiny Elephant trying to get back to their home. Collect hidden Gems to raise your Rank, borrow Items from Snorri the Wizard, explore a vast and varied pixel-art world, meet a colourful cast of characters, and more! While exploring the miniature world, you'll discover a wide array of unique rooms and puzzles to solve using your Items, all of which give you various abilities; grow vines to reach high places, dash over seemingly bottomless pits, dive into uncharted waters, and lift the heaviest obstacles with ease! But beware; there are also strange and powerful beings in this magical world, many of whom won't give up their Gems willingly! It'll take all of your abilities, wits, and skill to gather enough Gems to reach the Tower!</p>
<p><em><strong>Features</strong></em><em><strong>:</strong></em></p>
<ul><li>Charming pixel-art characters, items, and environments</li><li>350+ unique rooms to discover</li><li>6+ Distinct areas to explore</li><li>A vast assortment of NPCs to meet and talk with</li><li>36 Gems to collect, in addition to other secrets</li><li>Multiple endings</li><li>4 Boss encounters (3 of which are optional)</li><li>Game speed settings, to allow players to set their own pace while exploring</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ3MjcwMDUucG5n/original/dr7FGw.png" loading="lazy"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjUucG5n/original/jRPMj7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjYucG5n/original/Jqkx1r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjQucG5n/original/GuDkfr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjcucG5n/original/7Q73%2BL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjgucG5n/original/cT84a%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NzIucG5n/original/p49TrY.png]]
<p>There is a treasure hidden in the catacombs below the ancient city of Capath, and Kettec is intent on uncovering it. His friends however, would say this obsession is merely a way for Kettec to escape his problems with people. <br></p>
<p>And Kettec’s life is about to get more complicated, thanks to one Mell Wess. Arriving from another continent, Mell has assumed a powerful lordship and struggles to discern where his loyalties lie.&nbsp;
  </p>
<p>Mell and Kettec are attracted inexorably to one another, but to survive, the pair will have to navigate the twisted underground passages and the equally warped government of Capath. Even if they are able to escape these trials, a greater disaster looms...
  </p>

[img width=500 [https://img.itch.zone/aW1nLzMxODY1MTguanBn/original/ZsZjYW.jpg]]

<p>What do you do when someone that you’ve cared about forever is destroying themselves? What do you do when you’re being told there’s only one way to move forward but you know it’s at your own expense? How do you negotiate your way to happiness? Is someone else’s trust a gift or a responsibility, and how much can you accept?</p>
<p><em>Enter, Patrocles</em> is a two-player game about giving bits of your trust to another person so that you can save each other. It was inspired by the song <em>Achilles Come Down</em> by Gang of Youths, and it was written for the The No GMs, No Settings, No Campaigns Jam, by Kazumi Chin and Wild Woods Games.</p>

[img width=500 [https://img.itch.zone/aW1nLzYxMzUzOTgucG5n/original/Lh%2FCKI.png]]
<h4 class="text-center">Prologue &amp; Chapters One -&nbsp;Five out now!&nbsp;</h4>
<p class="text-center"><a href="https://www.kickstarter.com/projects/lunarisgames/errant-kingdom" rel="nofollow noopener">Kickstarter successfully funded</a></p>
<p>Errant Kingdom was previously being released in&nbsp;an episodic format. The final three chapters will be released in early Summer 2021. You can currently download the prologue and chapters one-five.&nbsp;Your purchase will give you access to the download of the currently available chapters and <strong>all</strong> subsequent updates for no additional cost. (Ever!)</p>
<figure><img src="https://img.itch.zone/aW1nLzM2OTg1MzgucG5n/original/%2FGONq5.png" loading="lazy"></figure>
<p><strong>Errant Kingdom</strong>&nbsp;is a queer, high-fantasy visual novel for PC, Mac, and Linux.&nbsp;&nbsp;The Kingdom of Novus has been thrown into disarray, and it's up to you to decide if you’ll help to bring peace, or if you’ll stoke the fires of chaos. Enter a high fantasy world steeped in political intrigue; where magic touches the land and blood turns the wheels unseen.&nbsp;&nbsp;Dishonour &amp; betrayal. Hope &amp; despair. Pick a side, and meet your match.</p>
<p>Errant Kingdom is a story with darker elements at play. As a denizen of the kingdom of Novus, you're at the heart of watching history unfold before your eyes. Whether you see its rise or fall, however, is up to you.&nbsp;There are those who will help you in your endeavors along the way, and might even find themselves enamored with you. Though, it is also possible to earn their ire should your plans be devious. Only&nbsp;<em>you</em>&nbsp;will influence how the story evolves, and the most important moves to make are yours, and yours alone.</p>
<p>Errant Kingdom features three playable protagonists with no fixed portrait, leaving players free to imagine their character as they see fit. Each playthrough has the potential to be vastly different, depending on your choices, your actions, and the way you interact with those around you.&nbsp;</p>
<p><em>Errant Kingdom is Rated M17 for explicit language, violence, and sexual themes.&nbsp;</em><em>The game is made with the Unity engine.</em></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg1NzcucG5n/original/RVpAjS.png" loading="lazy"><br></p>
<p><strong>THE AMBASSADOR&nbsp;</strong></p>
<p>You're a revered noble from Vih'thris chosen by your King to serve as an Ambassador to the kingdom of Novus. Previous meetings between you have made you see eye to eye, and you've managed to establish a friendly, but tenuous alliance. While newly immersed in the court of Novus, you advocate for the betterment of both kingdoms. However, though you may serve the realm, you also serve the people. The assassination attempt puts into question both the King &amp; Queen's ability to rule and their integrity. It's up to you to decide how you will proceed.&nbsp;</p>
<p><strong>THE KNIGHT</strong></p>
<p>You've been sent to Novus from the neighboring&nbsp;kingdom of Vih'thris as a show of good faith between rulers. Hand-picked by your king, your reputation as a knight proceeds you, and you've been charged to serve Novus and its inhabitants in the name of glory. The reception to your arrival has been promising, but following an attempt on the lives of Novus' rulers, everything has been thrown into chaos. You've sworn to protect Novus with your life, but are you happy to serve the sometimes bloody hands that rule?<br></p>
<p><strong>THE NOMAD</strong></p>
<p>By the order of a high-ranking associate in your hometown, you find yourself stationed in Novus; a kingdom that has a grudge against its newly appointed rulers. As a small rebellion threatens to find its footing, you plant yourself amongst the 'normal folk' to cause chaos. Though, it is up to you to decide if you will stoke those fires of rebellion, or if you'll douse them and reduce them to ash.&nbsp;<br></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg2MTAucG5n/original/M11cSh.png" loading="lazy"><br></p>
<p><strong>NO-ROMANCE&nbsp;ROUTE</strong></p>
<p>We want to give those who might not be interested in pursuing a romance the chance to comfortably enjoy the game. You can play the game without having to select any flirt options or enter a relationship whilst still experiencing the story in-full.<br></p>
<p><strong>REPUTATION</strong></p>
<p>Depending on your choices and actions throughout the game on our dialogue wheel&nbsp;your reputation will fluctuate. This system will allow players to unlock special dialogue options and experiences that will influence the reactions of those around you, all tailored around the choices you make, just like in your favorite RPGs!<br></p>
<p><strong>QUESTS (Coming Summer 2021)</strong></p>
<p>In Novus' town square you'll find a quest board where you can pick up additional mini-quests for added gameplay. You'll get the chance to embark on some weird and wonderful journeys in addition to the main story-line. Though, you'll have to wade through the letters of complaint, petty disputes between townsfolk, and lonely hearts adverts first...<br></p>
<p><strong>CODEX</strong></p>
<p>Unlock character information, lore, and much more in our Codex that will appear in the main menu via the 'Quests &amp; Extras' noticeboard.&nbsp;<span></span></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg2MTMucG5n/original/BKQs%2BF.png" loading="lazy"></p>
<p>Errant Kingdom has an LGBTQA+ cast of love interests, each with their own unique backgrounds and intertwining stories.&nbsp; If you choose a romance route, you will become exclusive with one (or two, if polyamorous options are selected) of our love interests, and will gain access to special scenes, CGs, and conversations.&nbsp;&nbsp;Our story is linear, so once a romance is selected, you will still interact with all of our other cast members!&nbsp;&nbsp;All six love interests are romanceable individually, and our polyamorous relationships are Lucien &amp; Raiden, and Maja &amp; Erik. Roux is asexual, and Livia is demisexual.</p>
<p><em>You can also check out our character playlists over on&nbsp;</em><a href="https://open.spotify.com/user/okikfo05oz2mnsy50wmlngmla" target="_blank" rel="nofollow noopener"><em>Spotify</em></a><em>!&nbsp;</em><em></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzM4MTQ5NTQuanBn/original/lTbpAj.jpg" loading="lazy"><br></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzM4MTQ5NTguanBn/original/f2M8rp.jpg" loading="lazy"><br></em></p>
<p><em>L-R top row; Lucien (they/them), Raiden (he/him), Livia (she/her)</em></p>
<p><em>L-R bottom row Erik (he/him) , Maja (she/her) , Roux (they/them)</em></p>
<p><span></span></p>
<h5 class="text-center"><a href="http://www.lunarisgames.com" rel="nofollow noopener"></a><a href="http://www.lunarisgames.com" rel="nofollow noopener">Website/&nbsp;Shop</a>| <a href="http://www.twitter.com/errantkingdom" rel="nofollow noopener">Twitter</a>| <a href="http://www.instagram.com/errantkingdom" rel="nofollow noopener">Instagram</a>&nbsp;| info@lunarisgames.com</h5>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzQ5MDQ1NDgucG5n/original/lW7TrI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTQucG5n/original/qUx%2FD%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5MTY4OTMucG5n/original/Vmxac7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzQzNDcwODgucG5n/original/s2DFn6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTMucG5n/original/04dZ0F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTAucG5n/original/fIEZPu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTQ5NzYucG5n/original/xAoFWq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5ODY0MDYucG5n/original/ZiEF1S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTIucG5n/original/kvdoGJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTEucG5n/original/QT4z0%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTQ5NzcucG5n/original/h%2B4Tc9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5MTY4OTUucG5n/original/nXnWJb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTUwMjUuanBn/original/40DsUI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTUwMzEuanBn/original/%2Bs9pgU.jpg]]
<h1>ESC IS...</h1>
<h3>an interactive novel about&nbsp;identity, roleplay, and dreams</h3>
<p>Enter the memories of Raine as she explores the text-based world of VerdaMUCK, a simulation of the old network within the vast cerebrally-interconnected network of the near future. Meanwhile, a mysterious individual known only as The Navigator exposes the truths of the Cerenet as a conspiracy-in-the-making begins to unfold.<br></p>
<h1>FEATURES</h1>
<ul><li>An interactive reading experience split between two character perspectives</li><li>Between 4-6 hours of play, depending on reading ability</li><li>Full soundtrack written by Lena Raine</li><li>Additional music by Christa Lee</li><li>Original art by Dataerase</li><li>Immersive sound design by 2 Mello</li></ul>
<h1>SYSTEM REQUIREMENTS</h1>
<ul><li>Computer running Windows or MacOS</li><li>Keyboard</li></ul>
<h1>CREDITS</h1>
<p><strong>Lena&nbsp;Raine<br></strong>Writing, Design, Programming, Music</p>
<p><strong>Maddison Morgenstern (Dataerase) <br></strong>Art</p>
<p><strong>2 Mello <br></strong>Sound Design<br></p>
<p><strong>Nick Suttner</strong><br>Editing</p>
<p><strong>Christa Lee
<br></strong>Additional Music</p>
<p><strong>Lotte May</strong><br>Additional Programming</p>
<p><strong>Natalie Weizenbaum</strong><br>Additional Editing</p>
<p><strong>j hayley</strong><br>macOS Port</p>
<h1>KNOWN ISSUES</h1>
<p>v1.0.0</p>
<ul><li>Game runs at 2x speed on 120hz monitors. This is a bug with the engine &amp; will be fixed as soon as GameMaker Studio 2 updates to fix it.</li><li>Switching between Fullscreen &amp; Windowed can cause shaders to apply incorrectly.&nbsp;<ul><li>Fix: Restart game with intended screen mode for shaders to apply correctly.</li></ul></li><li>Some laptops may run at a slower-than-intended speed.</li><li>Resolutions lower than 1920x1080 may scale oddly at full screen.&nbsp;<ul><li>Fix: Try running windowed &amp; manually scaling until it improves.</li></ul></li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/gHN253Iajl4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY5NTMucG5n/original/jo%2FNxb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODIucG5n/original/V7qQ5W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzEyMjg2OTAucG5n/original/5%2Fe2GE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODMucG5n/original/8BKjlv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODQucG5n/original/lH5i1j.png]]
<p>This game simulates a real-world escape room. The player starts in a closed room and has to try to get out as soon as possible. To do so, the player can inspect, combine, and interpret objects to obtain new clues to solve new puzzles. By studying the environment closely, the player will also experience a haunting story...</p>
<ul><li>free movement in 3D</li><li>many objects to inspect</li><li>tricky puzzles</li><li>hint system</li><li>a journey into the depths of a well-known friend</li><li>single player or multiplayer coop for 2 - 6 players</li><li>available in 9 languages (English, German, Chinese simplified, Russian, Spanish, Italian, French, Arabic, Portuguese)</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/QMm8gWUcfNE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU3OTgucG5n/original/qVZtAh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDAucG5n/original/IDwpEG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDQucG5n/original/lekKz%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDcucG5n/original/avWFad.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDEucG5n/original/8tD1Wu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDYucG5n/original/sKNg92.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU3OTkucG5n/original/qkpqH2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDMucG5n/original/SNchag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDIucG5n/original/si%2FXa%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDUucG5n/original/n%2Bbx%2BE.png]]
<p>Tired of the daily churn at the office, only to come home to an empty apartment? The Rainbow Dome shelter will help you find the perfect partner to spice up your life! Take a plunge into our exotic selection of pets, and you'll surely find the piece of you you've always been missing!</p>
<p><br>Inspired by&nbsp;<em>Hatoful Boyfriend</em>&nbsp;and the team’s love of animals,&nbsp;<em>Eternia: Pet Whisperer</em>&nbsp;is a short visual novel that sees you venture to a local deluxe animal shelter to find a companion to cure your loneliness. What ensues is a week you’ll never forget.<br><br><strong>Features</strong></p>
<ul><li>Befriend and adopt up to 6 animals: Cockatoo, Frill-Necked Lizard, Sphynx Cat, Koala Bear, Rat Brothers, Border Collie.<br>
</li><li>Ever wondered what a partying cockatoo might talk about? A neurotic border collie? Or a fitness-fanatic koala from Scotland? Now you can find out.
</li></ul>
<p>Made for a game jam by Shinmera and his team, during the development of their larger ARPG title, <a href="https://kandria.com" target="_blank" rel="nofollow noopener">Kandria</a>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vSvd_ObujK8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTQyLnBuZw==/original/9t95W8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTQxLnBuZw==/original/vuGC%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTg0LnBuZw==/original/A2zgmL.png]]
<p><br></p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/DDYvgNx2fzo" frameborder="0" allowfullscreen=""></iframe></div>
<p class="text-center"><br></p>
<p class="text-center">ETHEREAL is a <strong>profound experience</strong> (winner of the Audience Award on IGF 2019 where it was also nominated for its audio and sound design) where you have to find your way within an <strong>intricate and abstract</strong> series of levels, using different kinds of mechanics that allows you to <strong>modify the environment</strong> or the <strong>direction of your character movement</strong>...&nbsp;</p>
<p></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTcwNTUucG5n/original/Ml7kSG.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">Each corner of its world has been <strong>carefully designed</strong> to communicate <strong>without any text</strong> and expose a <strong>novel puzzle</strong> to solve <strong>without time pressure</strong>, evoking an <strong>introspective state of mind</strong>...</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTcwNTIucG5n/original/ya0UlJ.png" loading="lazy"><br></p>
<p class="text-center"><strong><br></strong></p>
<p class="text-center"><strong>KEY FEATURES</strong></p>
<ul><li>Beautiful minimalist and abstract art style</li><li>Awarded music and sound design</li><li>Non-verbal narrative</li><li>No time pressure, you can wander around as long as you want!</li><li>4 different worlds to explore, each one with new mechanics, challenges and secrets!</li><li>24 hand-crafted levels</li></ul>
<p class="text-center"><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5MTcwNTQucG5n/original/xc%2Fu7X.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">Developed by <strong>Nicolás Recabarren and Tomás Batista</strong>, from Nonsense Arts, an indie game studio from Argentina.</p>
<p><strong><em></em></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DDYvgNx2fzo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzgucG5n/original/FjcJuK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzYucG5n/original/0IMBWu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzkucG5n/original/Tju7SK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzcucG5n/original/gM1pfv.png]]
<p><strong>EVADER</strong> is an arcade style action game about skilfully avoiding death using a unique dual-control movement system.&nbsp;</p>
<p>Survive for as long as you can against endless waves of enemies&nbsp;.<br></p>
<ul><li>Fast and frantic "die and retry" gameplay</li><li>Six unique enemy types</li><li>Xinput Gamepad + Keyboard support (Gamepad recommended)</li><li>Online Leaderboards</li></ul>
<p><u><strong>Featured on <a href="http://kotaku.com/a-twin-stick-game-with-no-bullets-1796369065" target="_blank" rel="nofollow noopener">Kotaku</a>&nbsp;and <a href="http://www.pcgamer.com/free-games-of-the-week/" target="_blank" rel="nofollow noopener">PC Gamer</a>!</strong></u></p>
<p>------------------------------------------------------</p>
<p>Made for <a href="https://itch.io/jam/wizard-jam-5" target="_blank">Wizard Jam 5</a></p>
<p>Inspired by <a href="http://superhexagon.com/" target="_blank" rel="nofollow noopener">Super Hexagon</a>,&nbsp;<a href="http://store.steampowered.com/app/8400/Geometry_Wars_Retro_Evolved/" target="_blank" rel="nofollow noopener">Geometry Wars</a>, <a href="http://www.softbodygame.com/" target="_blank" rel="nofollow noopener">Soft Body</a>, <a href="https://www.giantbomb.com/helix/3030-48446/" target="_blank" rel="nofollow noopener">Helix</a> and&nbsp;&nbsp;<a href="https://roburky.itch.io/three-body-problem" target="_blank">Three Body Problem</a>.</p>
<p>Leaderboard hosting by <a href="http://www.dreamlo.com" target="_blank" rel="nofollow noopener">Dreamlo</a>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bZjy6rFM7-Q" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc5MC5wbmc=/original/A5WId5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0NS5qcGc=/original/Z7Rvja.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1Ny5qcGc=/original/%2BPVrWY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1OC5qcGc=/original/kSg27w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0Ny5qcGc=/original/j3zQHy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0OS5wbmc=/original/WdYsWA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1MC5qcGc=/original/DahlEY.jpg]]
<p><strong>Ex Novo</strong> is a playable city-generator to construct fictional villages and towns. This physical game can be played alone or with up to 3 friends. Playtime ranges from 1 to 3 hours.&nbsp;</p>
<p>Meet with your friends and collaboratively draw the map of your city as you explore the conditions that led to its founding and the events that shape its development.&nbsp;</p>
<p>Our aim was a generator that builds&nbsp;settlements that are useful for further creative use. For example in&nbsp;narrative endeavors or as preparation for&nbsp;pen and paper role-playing games.<br></p>
<p>Please share your cities with us using the hashtag <strong>#exnovo</strong>.</p>
<p>Created by&nbsp;<a href="https://twitter.com/mnerurkar" rel="nofollow noopener">Martin Nerurkar</a>&nbsp;and&nbsp;<a href="https://twitter.com/gnomeslair" rel="nofollow noopener">Konstantinos Dimopoulos</a>.</p>
<p><img src="https://img.itch.zone/aW1nLzMzNTY3NzAucG5n/original/rgdyVM.png" loading="lazy"></p>
<h2>Playing Ex Novo</h2>
<p>You (and up to three friends) take on the role of the guardian spirit of a freshly founded settlement. Its founding just brought you into existence. And with it it brought you your purpose: to witness its growth, shepherd its development and remember its stories.</p>
<p>As you play you will make sense of the events happening as you draw and plan on a collaborative map of the settlement and its changing shape. In the end you will have created an interesting fictional place with a sense of history.</p>
<h3>Sequence of Play</h3>
<p>Play begins with a brief <strong>discussion phase</strong>. Here each player shares their assumptions and expectations. You will also determine city size and age in this phase.</p>
<p>Then we move to&nbsp;the&nbsp;<strong>founding phase</strong>. Taking turns, each player defines some of the basics of the settlement, such as its purpose or the surrounding terrain. Whenever a feature is determined the acting player will draw it onto&nbsp;the map. By following the predefined sequence of turns you will end up with an interesting starting situation.</p>
<p>After this you enter into the <strong>development phase</strong>. Here each turn adds an interesting event that needs to be interpreted by the active player. During this time the settlement will grow, change or even shrink.&nbsp;This is where the exciting history of your city is played out, its shape evolves and the map grows.</p>
<p>The final phase is the <strong>topping out phase</strong>. Here a few quick turns are all that's needed to wrap up the development of the city and tie off all loose ends.</p>
<p>And finally you'll be left with an interesting settlement that you can enjoy or use as a jumping off point for something else, like a role-playing campaign.</p>
<h2>Other Sharkbomb Games</h2>
<iframe frameborder="0" src="https://itch.io/embed/729965?bg_color=335e6e&amp;fg_color=eeeeee&amp;link_color=ea5d8e&amp;border_color=514654" width="552" height="167"><a href="https://sharkbombs.itch.io/ex-umbra">Ex Umbra by Sharkbomb Studios, Martin Nerurkar</a></iframe>
<iframe frameborder="0" src="https://itch.io/embed/653571?bg_color=34192f&amp;fg_color=fcf7de&amp;link_color=ed6a5a&amp;border_color=675b7d" width="552" height="167"><a href="https://sharkbombs.itch.io/hold-your-own">Hold your Own by Sharkbomb Studios, Martin Nerurkar</a></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzcucG5n/original/Exa3fo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzgucG5n/original/4DGeYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzkucG5n/original/XAqb4v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDEucG5n/original/GxhFxl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDIucG5n/original/jTODqa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDMucG5n/original/wAYHum.png]]
<h1>Explore an archipelago, encounter fellow explorers, and seduce and haggle with them to help you complete your map!</h1>
<p>There is no time constraint, no danger, there's no gameover. Instead, this game proposes a calming experience of exploration and encounters.&nbsp;You can just stop playing when you feel satisfied. A play session will usually last 15 to 30 minutes.</p>
<p><span></span></p>
<p><br></p><p><strong>You can play the Complete edition for free over on Pico-8 or <a href="https://www.lexaloffle.com/bbs/?tid=39656" target="_blank" rel="nofollow noopener">on the Pico-8 BBS</a>.</strong> <em>(web-based, plays on all platforms, including mobile)</em></p><p><br></p>
<p><strong>The Deluxe edition</strong>&nbsp;comes with <strong><em>extras</em></strong>:</p>
<ul><li><strong>Standalone executables</strong> of the game for Windows, Mac and Linux.</li><li><strong>A Desktop Pet</strong> based on the game to accompany you in your everyday computer tasks. <em>(Windows only)</em></li><li>A handful of <strong>digital wallpapers</strong> to use for your phones and computers.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/RIYj0fsJX-4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MjQuZ2lm/original/yztKXA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MDAucG5n/original/21f7Pm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MDMucG5n/original/VzRiYy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MTAucG5n/original/Z7WtQ2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3NjYwMzEuZ2lm/original/qvD0Va.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3NzQwNTgucG5n/original/UdOc36.png]]

<p>A short visual novel about life in Hamburg. It's exclusively in German.<br></p>
<p>Plot:</p>
<p>Eyad and Hala are two Palestinians living in Wilhelmsburg. They find unexpected support from an Irish-run café.</p>
<p>Eyad und Hala sind zwei Palästinenser, die in Wilhelmsburg leben. Unerwartet erfahren sie Solidarität in einem von Iren betriebenen Café.</p>
<p><br></p>
<p><br>If you are a visual artist who would like to work with me to bring this story to full fruition, please let me know! (Paid)<br></p>
<p>I am open to feedback. Please let me know what you think! :)<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDgucG5n/original/6ldtgb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDkucG5n/original/cPkmW7.png]]
<h1>ATMOSPHERIC SPACE SIMULATION<br>
</h1>
<ul><li>Played entirely within fictional operating system sMaat 9</li><li>Simulation of 250+ solar bodies (with light fictionalizations; see accompanying info.txt for data sources)</li><li>Exploratory narrative told through email, news headlines, and REGISTRY database entries</li></ul>
<div><em>Immersion note: For the most immersive experience, full-screen display is recommended.<br></em></div>
<h2>CONTEXT</h2>
<p>The year is 2221 and you are the lone technician aboard the Eye of Ra, an anti-asteroid space station orbiting Earth.<br></p>
<p>It has been two decades since the Apep event caused widespread disturbances throughout the Solar System. Ancient orbital paths and gravitational partnerships were forever altered, and our centuries-old knowledge of them was rendered unreliable. The calculated, near-zero risk of an asteroid impact on an inhabited world suddenly became unknown.</p>
<p>The Solar Union scrambled to recalculate the odds, to find lost objects before they could strike one of its five member worlds. Nuclear warheads were stockpiled and aimed at the skies of the Incorporated Planet of Mercury, the Republic of Mars, the Federation of Jupiter, and the Colonial Republic of Titan. Meanwhile, on Earth, they built something entirely new: the Ra laser. An orbital, Solar-powered cannon capable of reaching across the Solar System and removing kilometres-wide objects from existence.<br></p>
<p>The power within the Eye of Ra defends us all from the modern asteroid threat. The  Solar Union entrusts Earth with the protection of its member worlds, who in turn entrusts the Eye of Ra to one technician: you.</p>
<h2>REPORT BUGS</h2>
<p>Please report bugs to <a href="https://twitter.com/bear_cabin" rel="nofollow noopener">@bear_cabin</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/D341VLU0Wng" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3ODkucG5n/original/h4n0JX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTAucG5n/original/aeE8u%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE4NDgucG5n/original/Gbs3G8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTMucG5n/original/9NO6Uf.png]]

<p><em>Sail the seas with your fellow crew, satisfy the whims and of the captain, and explore all your senses in this nautical adventure! Explore the Elephant Garden and the Geistfeld Key,&nbsp; or puzzle over why the Silvercoat Patrols hired your crew for this strange mission.</em></p>
<p><em>Fair Winds and Following Seas</em> is a game for 2-6 players. In the game, you play the crew of a ship, hired to complete a task. Your employer, destination, and the details of the task are determined randomly, and play includes taking turns describing six sensory experiences for each trip, and sharing a sea shanty with the rest of the crew. A voyage takes about 30 minutes to play and requires no prep, and you can play multiple voyages at once if you have the desire and the time. Carry your ship and crew from mission to mission, with records of each characters' journey. The main game file includes print and play cards as well as tables to roll on if you are do not wish to print the document.<br></p>
<p><em>Fair Winds and Following Seas&nbsp;</em>was originally written for the Big Bad Con 2018 Kickstarter campaign.</p>
<p>Each purchase of the game adds additional community copies for those that can't afford it on their own.</p>

[img width=500 [https://img.itch.zone/aW1nLzI4NTIzNjQucG5n/original/c5lnw%2B.png]]
<p><strong>Fairy Corgi Steeplechase</strong></p>
<hr>
<p><em>Fairies used to ride corgis into battle, but now they ride for fun and prestige. You’re an up-and-coming trainer of racing teams, and this year you’ve been invited to the Cravat Crown races! Will your team win the glory?</em></p>
<hr>
<p>Needed to play: 1d10 per player, pencil and paper, a love of cute things</p>

[img width=500 [https://img.itch.zone/aW1nLzQxNDQ2ODcucG5n/original/Pfpv5Q.png]]
<p>The Demons of the Past have overrun the world. In a last ditch effort, the planet itself decides to fight back.</p>
<p><br></p>
<p>Fly an Orb, shoot demons, enjoy the colours and get the ever elusive "High Score".</p>
<p><br></p>
<p>Controls:</p>
<p>Keyboard:</p>
<p>W/up: Boost</p>
<p>A/D, arrow keys: rotate</p>
<p>Space: Shoot</p>
<p>P: Pause</p>
<p><br></p>
<p><br></p>
<p>Gamepad (Xbox controller, any Xinput device should work though):</p>
<p>A: Boost</p>
<p>X: Shoot</p>
<p>left analogue stick/dpad: rotate</p>
<p>start: pause</p>
<p><br></p>
<p>Press escape to quit the game</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/LULbB5Y8ysw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MTguZ2lm/original/bIgWSo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDYucG5n/original/pXmMi9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDcucG5n/original/n0B8hd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDkucG5n/original/yTsjiG.png]]
<p></p>
<p>Fake Illusions is a collection of optical illusions—but some of them are not playing fair! Where some lines only look diagonal, one line <em>actually</em>&nbsp;is, and circles look like they differ in size, but secretly, one of them is <strong>bigger</strong>&nbsp;or smaller, camouflaged by the illusion. It's your job to point them out! But beware—the fakers will do everything to stay unnoticed... It's the ultimate test of your focus!</p>
<p>Featuring ten different versions of famous illusions like the Hermann Grid or Müller-Lyer arrows, each with a number of variants and distractions, for a total of 50 levels! If that's not enough, try the relaxing Zen mode or the hectic Shuffle mode. You can play it together too: as long as everyone can see your screen, you can use the number each illusion is tagged with to discuss and accuse fakers. You can even export your favorite puzzles as a GIF after solving!</p>
<p>Fake Illusions was made by solo developer Auroriax (best known for <a href="https://auroriax.itch.io/mobility">Mobility! The accessible precision platformer</a>).&nbsp;<strong>Want to try the game?&nbsp;</strong>The&nbsp;<strong><a href="https://twitter.com/FakeIllusionBot" rel="nofollow noopener">@FakeIllusionBot</a>&nbsp;</strong>tweets a puzzle from the game every day! (There's also a <a href="http://press.auroriax.com/" rel="nofollow noopener">presskit</a>.)<br></p>
<p><strong>Epilepsy warning</strong><br>This game features optical illusions, repeating patterns, and high contrast images. If you start feeling sick or dizzy while playing, stop immediately.<span></span></p>
<p></p>
<p><strong>Accessibility info:</strong></p>
<ul><li>Epilepsy warning: This game features optical illusions, repeating patterns, and high contrast images. <strong>If you start feeling sick or dizzy while playing, stop immediately.<br></strong></li><li>Color blind friendly: the game uses only greyscale, red and green colors, with adjustable brightness. Some illusions require you to spot differences between colors, but these can be skipped.</li><li>Textless: Very little reading is required to play Fake Illusions.</li><li>Autosave: Quit the game at any time and continue exactly where you left off next time you play.</li><li>Difficulty: The game is designed to be difficult but fair. You can also set the "fake" illusion to be easier to harder or spot in the settings. This is also indicated with a smiley in the interface.</li><li>Controls: Completely playable with just the mouse and left mouse button (or completely with keyboard since version 1.1!)</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/wNmDVjBYjIs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzUuZ2lm/original/uuka%2Bi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzYuZ2lm/original/PIQ1x1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzcuZ2lm/original/P0OJgH.gif]]
<p>In September of 2015,&nbsp;<em>Undertale&nbsp;</em>came out and swept players up in its celebration of compassion, friendship, and spaghetti-making skeletons. Eschewing violence, "The RPG game where you don't have to destroy anyone." lets players befriend killer robots, fishy knights, and warrior dogs through careful conversation in combat.</p>
<p><em>Fallen Down: Heartache &amp; Compassion in Undertale</em>, an unofficial look at&nbsp;<em>Undertale</em>,&nbsp;explores why we want to make friends with the cast of monsters that would normally get in the way of any other RPG hero. It looks at the ways the game gives monsters personalities and feelings, how it teaches the player to feel for their foes, and what that connection means should the player choose violence in their explorations of the Underground.</p>
<p>Featuring tens of words from developer Toby Fox,&nbsp;<em>Fallen Down&nbsp;</em>is a celebration of the positivity and creativity their work has created in the world, as well as a personal look into our behaviors in digital worlds and the cruelty that stems from playing in them without consequences.</p>
<p><em>"Couture's book perfectly encapsulates what makes this game so special. It's well worth a read for anyone that enjoys this indie classic."</em>&nbsp;<em>– <a href="http://www.rpgsite.net/feature/5869-fallen-down-by-joel-couture-how-emotional-bonds-are-formed-with-pixels-in-undertale" rel="nofollow noopener">Elizabeth Henges, RPGSite</a></em></p>
<p><em>"Fallen Down" leaves you with a lot to think about, and it's written in a direct, very affecting way – enough that it made me question my own motivations as a gamer."&nbsp;– <a href="http://www.thelogbook.com/book/fallen-down-undertale/" rel="nofollow noopener">Earl Green, TheLogBook.com</a></em></p>
<p><span></span><em>"I like considering this book as a love letter to this wonderful game. Each page is full of kindness and respect for this chef d'oeuvre and its creator. If you loved Undertale as much as we do: read this book. I bet it will echo to your experience too."</em>&nbsp;<em>– <a href="https://www.chroniquesvideoludiques.com/regrets-and-guilt-in-undertale-lettre-ouverte-a-joel-couture/" rel="nofollow noopener">Esteban Grine, chroniquesvideoludiques.com</a></em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTY3LzgyMTkyMy5wbmc=/original/1zGx0x.png]]
<h3>Intro:</h3>
<p><span style="color: inherit; font-size: inherit">Intro:</span></p>
<p>This is a top-down fantasy 8px tileset made by me! I hope you like it! It features a 4 colour palette and could work for zelda-like, rogue-like, and any other top-down type game! Please enjoy it!<br></p>
<p><br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgxMDUuZ2lm/original/PNNzl0.gif" loading="lazy"><br></figure>
<h3>Includes:</h3>
<ul><li>An animated player character&nbsp; &nbsp; &nbsp;&nbsp;</li><li>15+ Enemies<em></em><em><em><em></em></em></em></li><li>25+ Items&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<em>&nbsp; &nbsp;&nbsp;</em></li><li>Multiple Wall types</li><li>Doors &amp; Stairs</li><li>Furniture</li><li>Basic UI</li><li>Font</li><li>Status Icons</li><li>Basic FX</li></ul>
<p>‏‏‎ ‎<br></p>
<p><em><img src="https://img.itch.zone/aW1nLzU5NDgwOTguZ2lm/original/sxMdWf.gif" loading="lazy"></em></p>
<h3>LICENSE:</h3>
<ul><li>This is under the&nbsp;<span class="">Attribution 4.0 International</span>&nbsp;<span class="">(CC BY 4.0) License!</span></li><li><span class=""></span>You can use it in personal and commercial projects with attribution!&nbsp; &nbsp; &nbsp;</li><li>You can alter the tileset to suit your needs!</li><li>BUT, You <strong>cannot </strong>resell or redistribute this tileset.</li></ul>
<h3></h3>
<h3></h3>
<h3></h3>
<h3>‎‎‎‎‎‎‎‎‏‏‎ ‎</h3>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxNTEuZ2lm/original/Ev3CM5.gif" loading="lazy"></h3>
<h3>FINAL NOTE:</h3>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgwNjYucG5n/original/w8pejt.png" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxMjEuZ2lm/original/auvgmU.gif" loading="lazy">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="https://img.itch.zone/aW1nLzU5NDgxMjMuZ2lm/original/znvvEn.gif" loading="lazy">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="https://img.itch.zone/aW1nLzU5NDgxMTkuZ2lm/original/8Ci3mp.gif" style="color: inherit; font-size: inherit" loading="lazy"><span></span></h3>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc4LnBuZw==/original/mA1GX5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc3LnBuZw==/original/LYNMZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc2LnBuZw==/original/LfrKIw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc0LnBuZw==/original/Pcdlth.png]]
<p>Fast Cubes is a puzzle game with time limits. You need to put the cubes on their slots, but there are many traps to kill them.</p>

[img width=500 [https://img.itch.zone/aW1nLzUyMTI3MjkucG5n/original/m%2BXnhC.png]]
<p>Slice up shapes with your mouse or finger, reach the goal size, avoid bouncing balls, bombs and impenetrable walls. Better your score and earn achievements.</p>
<p>Features;<br>- Downloadable version includes 64 levels incl. Gauntlet and Infinite Mode<br>- 8 Achievements</p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDMucG5n/original/jM6kIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDQucG5n/original/S5rSmS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDcucG5n/original/lIsqUn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDUucG5n/original/KUhM%2B6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDYucG5n/original/%2FyyYzb.png]]
<p><em><strong>Fear &amp; Loving</strong><span></span>, written and illustrated by&nbsp;<a href="https://twitter.com/celestialmecha" target="_blank" rel="nofollow noopener">Saturn</a>,<span></span> is a supplement for <strong>Beam Saber.&nbsp;</strong>It is published under the <strong>Beam Saber Supply Drop </strong>license, and requires Beam Saber by Austin Ramsey to play. <a href="https://austin-ramsay.itch.io/beamsaber">You can purchase the game and find licensing information by following this link</a><span></span>. Fear &amp; Loving is not an official Beam Saber product, nor is it affiliated with Austin Ramsey Games.</em></p>
<hr>
<h2>Make your squad a little more dangerous with...</h2>
<p><strong>THE ANGEL.&nbsp;</strong>They cross the line -- dancing with the enemy, opening their heart, and burning out hard.&nbsp;<em>How can they save everyone when they can't even save themself?</em></p>
<blockquote>Not to be confused with Janie Jaffe W.'s excellent <a href="https://janiejw.itch.io/the-angel-playbook">The Angel</a>.</blockquote>
<p><strong>THE DARLINGS. </strong>They're the perfect pair -- exploding their foes, fighting as one, and showing everyone the power of love.&nbsp;<em>Will they make it out of this in one piece?</em></p>
<p><strong>THE WITCH.</strong>&nbsp;They're a harbinger of&nbsp;ill omens -- casting spells, cheating death, and drawing power from a mysterious benefactor.<em>Who's really piloting who?</em></p>
<p><strong>ALSO FEATURING</strong> colorful artwork, tiny prose, and some Table Safety writing to make sure everyone has a good time!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAyNDMucG5n/original/cORncA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAzNDcucG5n/original/R8dF7S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAzNDgucG5n/original/s5knMh.png]]
<p><em>Fear is Just a Lie</em> is a world-building game designed to help you establish a town setting for a horror RPG. The game takes place in 5 phases and requires a standard french deck of playing cards (52 suited cards) and a journal to write in.&nbsp;<br><br>This game was written for The Solo Games Jam. It was inspired&nbsp; by media like Twin Peaks, Alan Wake, <a href="https://finji.itch.io/night-in-the-woods">Night in the Woods</a>, <a href="http://pnwstories.squarespace.com/" rel="nofollow noopener">Pacific Northwest Stories Podcasts</a>, and <a href="https://adira.itch.io/the-machine">The Machine</a> by Adira and Fen Slattery</p>
<p>This game was written, photographed, and produced on unceded Munsee Lenape lands.&nbsp;</p><p>Listen to an actual play on the Chicks With Dice Podcast!&nbsp;</p><p><iframe width="100%" height="180" frameborder="no" scrolling="no" src="https://share.transistor.fm/e/40709551/dark"></iframe><br></p>

[img width=500 [https://img.itch.zone/aW1nLzQwNDAxMDkucG5n/original/bhY%2FBQ.png]]
<p>Enjoy a throwback to the game design of yonder year, as you rob a bank for every dollar it has! Grid based movement lets you carefully plan your approach, but watch out for a security system that is constantly upgrading to try and stop you!</p>
<p>Windows only.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/UKoD1Aou6RE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzcucG5n/original/jH4dij.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzkucG5n/original/hK5tqk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzgucG5n/original/m9WDOu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5NDAucG5n/original/%2BqrYHr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5NDEucG5n/original/OOMSdY.png]]
<p>Just a fun little cookbook of Asian-American style foods for my friends! All of these recipes are VEGETARIAN or easily adapted to be VEGETARIAN.</p>
<ol><li>The Super-Secret All-Purpose Seasoning</li><li>Spicy eggs
  </li><li>Roasted vegetables
  </li><li>Korean seafood pancake (SEAFOOD PART OPTIONAL, JUST TAKE IT OUT IF UR VEGETARIAN)
  </li><li>Sweet and spicy corn
  </li><li>Japanese mixed rice (Takikomi gohan) (FISH BROTH (DASHI) OPTIONAL)
  </li><li>My favorite basic noodle soup (SEAFOOD PART ALSO OPTIONAL)</li></ol>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjgucG5n/original/0j7Rgc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NDEucG5n/original/%2BX3yDM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjEucG5n/original/C22ZzU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjQucG5n/original/Zfdg7U.png]]
<p><em></em>Monsters spawn in the dungeon. What do you do?</p>
<p>▶ FIGHT
</p>
<p>▶ ITEM
</p>
<p>▶ RUN</p>
<p><em>Fight</em>&nbsp;<em>Item</em>&nbsp;<em>Run&nbsp;</em>is a Powered by the Apocalypse tabletop roleplaying&nbsp;game that smashes action-packed combat and magic together with dynamic character and relationship exploration. The party begins in a chamber and there are monsters; once they’ve defeated the monsters, they proceed to the next chamber where there are more monsters. Chambers also have items, treasures, puzzles, and mysteries. When the party has collected the adequate gear to advance to the next level of the dungeon, they come to the chamber with&nbsp;the passage, staircase, portal, or alien warp pad to continue forward. The goals for&nbsp;<em>Fight</em>&nbsp;<em>Item</em>&nbsp;<em>Run</em>&nbsp;are the following:</p>
<p>▶ Fight monsters, collect items, survive the dungeon.
</p>
<p>▶ Tell a collaborative story of mystery and adventure.
</p>
<p>▶ Plant and build upon evocative details at every chance.
</p>
<p>▶ Explore the lives and relationships of characters traveling together.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDY5LnBuZw==/original/9oAIu2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDcwLnBuZw==/original/1FpKq9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDcxLnBuZw==/original/5jVlVK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDczLnBuZw==/original/XR7Lto.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDc2LnBuZw==/original/tNnWQ9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDc4LnBuZw==/original/5XyNUi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDgxLnBuZw==/original/5GZd5o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDg0LnBuZw==/original/%2BG0Wvr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDg3LnBuZw==/original/8xF6VF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk0LnBuZw==/original/3eCxJL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk4LnBuZw==/original/RdUbsZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MTAxLnBuZw==/original/Aj9w%2Bt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk5LnBuZw==/original/%2FOIu%2Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MTAwLnBuZw==/original/uvcoK0.png]]
''Enter exact rating'': <$edit-text tiddler="$:/temp/CollectTags/searchWord" placeholder="5.0" default="5.0" tag="input" type="text" size=2/>

<$list filter="[has:field[url]field:rating{$:/temp/CollectTags/searchWord}]">
"""
<$link to={{!!title}}><$view field="title"/></$link>
"""
</$list>
<p><strong><u>Gameplay</u></strong></p>
<p>Final Spike is a side-view 1-on-1 beach volleyball game. The objective is simple--score more points than your opponent to win! Players can knock the ball up with their bodies, launch it with a set, or knock it down to the ground with a blazing spike!</p>
<p>The full version of the game includes the following features:</p>
<ul><li>4 playable characters</li><li>4 stages</li><li>Rebindable key options</li><li>Customizable gameplay timers, score limits, etc.</li></ul>
<p><strong><u>Minimum Requirements</u></strong><br></p>
<p>Though there is keyboard support, the game plays best when using a controller. Currently, PlayStation 3, PlayStation 4, Xbox 360, and Xbox One controllers are all supported. Nintendo Switch Joycons are also supported.<br></p>
<p><strong>Windows:&nbsp;</strong>Vista OS or newer. 32 or 64-bit should be OK. DX11 required.<br></p>
<p><strong>Mac:&nbsp;</strong>10.12 (Sierra)&nbsp;is recommended.&nbsp;Older OSes are likely not supported due to changes in Unity rendering.<br></p>
<p><strong><u>Frequently Asked Questions</u></strong></p>
<ul><li><u><em>Steam release?</em></u><ul><li>Unlikely for now.</li></ul></li></ul>
<ul><li><em><u>Console release?</u></em><ul><li>Unlikely for now.</li></ul></li></ul>
<ul><li><em><u>Netplay?</u></em><ul><li>Not likely at the moment. If you're really interested in netplay, and want a trustworthy 3rd party option, there's always <a href="https://parsecgaming.com/" target="_blank" rel="nofollow noopener">Parsec.</a></li></ul></li></ul>
<ul><li><em><u>Additional&nbsp;characters?</u></em><ul><li>Possibly.</li></ul></li></ul>
<p><em></em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/iIZHswjvYx4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MjQwLzE0Mjk1MTcucG5n/original/TbURdl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MjQwLzE0Mjk1MTYucG5n/original/F%2BGVnm.png]]

<p>Fire Place is for people who want the simple pleasure of building and maintaining a fire over the course of the night: something beautiful, complex, and soothing to watch, a living presence in your space with you.&nbsp;<br><br>Put Fire Place on that big screen in your living room during friendly gatherings, especially on cold winter nights. Holler at your co-hosts to put another log on when the fire starts to dwindle. Enjoy the crackle and the quiet flicker of warm light.</p>
<iframe style="border: 0; width: 600px; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2042086295/size=large/bgcol=333333/linkcol=e99708/tracklist=false/artwork=small/transparent=true/"><span class=""></span><a href="http://icewatergames.bandcamp.com/album/fireplace-ost" rel="nofollow noopener">Fireplace OST by Michael Bell</a></iframe>
<p>Fire Place comes with four basic environments: a northwest Forest, an old brick fireplace in Seattle, a bright Santa Fe stucco, and the Washington coast.<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/933080/extras/steam_environments.png?t=1537566480" loading="lazy"><br><br>In addition, three artists have contributed a personal touch -&nbsp;<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/933080/extras/steam_environments_feat.png?t=1537566480" loading="lazy"><br><br>Look for the addition of new environments as the season progresses.</p>
<p></p>
<h2>Features:</h2>
<ul><li>Balled up newspaper, logs of all sizes, matches.</li><li>An iron poker and tongs for manipulating the burnables.</li><li>A volumetric simulation of air heat and velocity.</li><li>A beautiful and complex dynamic soundtrack by the award-winning Michael Bell.</li><li>Simulation settings for values such as the ambient heat in the room, the rate of diffusion, the heat coming off of the logs, and more.</li><li>Graphics settings that allow tweaking of the fire's rendering style.</li></ul>
<h2>System Requirements:</h2><ul><li>Fast CPU and a relatively new graphics card<ul><li>Tested and runs alright on low settings on Nvidia GTX 750</li><li>Recommended Nvidia 900 series</li><li>Requires support for Shader Model 5.0</li></ul></li></ul>
<p>Please do try out the demo first to make sure it works on your machine. If you encounter any other issues, please email details to hey@badru.graphics.</p>
<p>All purchases come with a Steam key.&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/T7BIFrTaeBs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDkuZ2lm/original/pw%2BNPw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDcuZ2lm/original/LyEv%2Bz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDguZ2lm/original/IKjX1u.gif]]
<h3><img src="https://img.itch.zone/aW1nLzIzMDQyNzQucG5n/original/HD8NQe.png" loading="lazy"></h3>
<p>Reform the church to divorce and marry as you please, from foreign princesses to your favourite bookshelf. Or both. Jail your steward. Execute everyone. Ordain your horse as a priest. Knight your bed. Who’s going to stop you? God? Nope. You're Pope now.<br><br>This is no game of thrones. This is real life, as Henry VIII would have lived it. If only he had the imagination.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDM1MTQuZ2lm/original/CUXGHL.gif" loading="lazy"><br></p>
<p>England, 1520. As the king or queen of this nation, you've been challenged to out-spend your rival, King Frank, at the Field of the Cloth of Gold. With the help of your staff and sycophants, you might be able to do it. Except you've misplaced your gold all over the castle... time to find all those chests and collect all those taxes!&nbsp;<br><br>Maybe you'll bankrupt the country, but at least you'll have a good time doing it.<br></p>
<p><img src="https://img.itch.zone/aW1nLzIzMDQyNzUucG5n/original/kPUfpr.png" loading="lazy"><br></p>
<ul><li>26 royal commands, including (M)arry, e(X)ecute, (C)ollect taxes, (B)less, (K)night, (P)lay Lute and (R)eform Church.</li><li>Play as King or Queen and rewrite the laws to suit your whim.</li><li>Non-linear adventure sandbox simulation. Rule your kingdom or wreak havoc in it, as you prefer.</li><li>Meet Machiavelli, Suleiman the Magnificent, and more, in incredible historical realism.</li><li>Original music tracks by Visager Music, as well as an adaptation of Henry VIII's masterwork, Pastime in Good Company.</li><li>A bear. Beware.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzIzMDM1MjEuZ2lm/original/7FgD25.gif" loading="lazy"></p>
<p>Humiliate King Frank with your wealth and excess, or die trying.<br></p>
<p>You can also <a href="https://visager.bandcamp.com/album/fit-for-a-king-original-soundtrack" rel="nofollow noopener">buy the original soundtrack by Visager Music here</a>!</p>
<p><strong>Developed by: </strong><a href="https://twitter.com/pulsemeat" target="_blank" rel="nofollow noopener">Brent Ellison</a>&nbsp;&amp;<strong>&nbsp;</strong><a href="https://twitter.com/tanyaxshort" target="_blank" rel="nofollow noopener">Tanya X. Short</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/NAYMT8vESS0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjIuanBn/original/Lbk5TM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjQuanBn/original/lnAN0w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjMuanBn/original/arai%2Bb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDcuanBn/original/PUlMdV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDguanBn/original/MfSneg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDYuanBn/original/Diy5r7.jpg]]
<p>Congratulations! You've adopted your very own pet Birb. Sure, Birbs may be small at first, but they have a big appetite for berries! Help your Birb collect berries to strengthen its performance. With enough practice, patience, and proper nourishment, your Birb can achieve its dream of soaring sky-high!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bwqt8IuRM6w" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgyODcucG5n/original/o%2F9sRn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDMucG5n/original/V%2F8txT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDQucG5n/original/2uPH7u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDIucG5n/original/KAf38E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDEucG5n/original/i80DcY.png]]
<p>Guildhall is an archipelago nation, far from the war and politics of the continent, but deeply embroiled in its own struggles... ages ago it was run by the Council of Archmages, but they all died when the world's magic started to slip away, and the islands are trying to hold onto civilization with dying spells and failing artifacts.</p>
<p>Worse, the great Sea Walls have finally fallen, leaving Guildhall open to the beasts from the ocean, where monsters beyond imagination dwell.</p>
<p>You are a member of the&nbsp;Flintlock Society: your soul has been bound to a ship, giving you incredible resilience and magical skill, in exchange for battling the many, many sea monsters which threaten your nation.&nbsp;</p>
<p><em>Flintlock</em> is a story game that's primarily about describing big, pirate-themed action set-pieces, in which you dramatically lash out at a watery monster which will, in turn, lash back at you. Think of it less as a game and more as a "cool scene engine."<br></p><p>--</p><p>(Are you a&nbsp;<a href="https://www.patreon.com/glaiveguisarme" rel="nofollow noopener">Patreon</a> supporter?&nbsp;Pick up your copy of the game&nbsp;<a href="https://glaiveguisarme.itch.io/">here</a>!)<br></p>

[img width=500 [https://img.itch.zone/aW1nLzI3MTYwMDkuZ2lm/original/0Q4rs%2B.gif]]

<p><strong></strong><strong>Made with <span class=""><span class=""></span></span><a href="https://jlevstein.itch.io/" target="_blank">Jonathan Levstein</a>.<br></strong></p>
<p><strong>Folk, Form, Phenomenon</strong> is a collaborative storytelling game about myth making, belief and a supernatural entity that plagues (or blesses) the land. It is a game about lore, mythology, folk tales and spooky stories told around campfires. It is about deities and demigods, cryptids and monsters that live under the bed. This story is told through the marking up of a custom map, which represents the region where the creature and factions concerned with it live. Gameplay is generated by prompts for the players using a standard 52 card deck. <em><strong><br></strong></em><em><strong><br></strong></em></p>
<p><em><strong>FFP is fully playable online through with the included custom Miro board (link in downloads)</strong></em><br><br><em>GMless - 4-5 players - 2-4 hours - no prep</em><em><strong></strong></em><br></p>
<p>FFP is a hack of <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, &amp; Bone</a> by <a href="https://possible-worlds-games.itch.io/">Tyler Crumrine</a> using the&nbsp; <a href="https://possible-worlds-games.itch.io/bfb-srd" target="_blank">BFB SRD</a> for the <a href="https://itch.io/jam/bfb-jam">#BFBJAM</a>. <br></p>
<h2><strong>Itch Fund for a print run!<br></strong></h2>
<p>When we get to $500 in sales we will do a full zine print run of Folk, Form, Phenomena, which may even include a laminated hex map for use with wet erasers! Everyone who buys the digital game while the fund is up will receive a code for $6 off when the physical copy exists (while only paying $5! WHOA!)<br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY4MDYyLzU4MTg3MTMuanBn/original/sV8WMd.jpg]]
<p>Follow Me in the Night; a Cursed Radio is a Carta journaling game inspired by film noir movies, Phonogram by Kieron Gillen and Jamie McKelvie, and many sleepless nights. You play a weary magic user, wandering dark streets banishing the phantoms that haunt them; phantoms powered by bad memories and cursed music.</p>
<p>You will require a deck of playing cards, a pair of d6, a token of some kind (a coin, a bottle cap, a die, etc.), something to write on and something to write with. You will be required to make a playlist which you will listen to while playing, so have something you can play off of.<br>
</p>
<p>_________________________________________<br></p>
<p>You wake up. You can’t remember when you slept but it’s night now. You peak out through venetian blinds, careful to avoid giving too much indication of being alive. Your ghosts are still outside. You’ve been haunted for a while now. The ghosts are clinging close to your soul, picking over scabs, asking if you’ve forgotten.
  </p>
<p>You turn on the radio; it’s resting on an unused signal. But you start to hear music. Music that reminds me of your ghosts. You try and dial another frequency in. The song persists. You step outside. The wind whistles the music you want to leave behind me. The cursed radio follows in your foot steps.
  </p>
<p>Maybe you can find banishing spells on the street. Tap into the music and magic coursing through your veins. Visit your old haunts. See if you can leave your curse behind.
</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzU2MTUzNTIuanBn/original/vyIRKO.jpg]]
<p>(This is an apk file to sideload onto your Oculus Quest)</p>
<h5>The patrons are hungry, so feed them!</h5>
<p>Huck food at their faces to <del>shut them up</del>&nbsp;graciously serve them... in VR!&nbsp; Grab their tips, prep for the next wave, and do it all over again!&nbsp; Can you survive to Wave 99?</p>
<h5>Food Flingin' Fun!</h5>
<ul><li>An Oculus Quest VR arcade game.</li><li>Randomized patron preferences means lots of replayability.</li><li>Arcade mechanics - Wait till they're on the Sweet Spot to increase your coinage (and points!).</li><li>Puts the 'fun' back in 'Virtual Reality is fun'!</li></ul>
<h5>Credits:</h5>
<ul><li>Programming, Design - Eric Guadara</li><li>Producer - Brian Olson</li><li>Music -&nbsp;Ricardo Cuello<ul><li><a href="https://rest--vgmusic.bandcamp.com/" rel="nofollow noopener">https://rest--vgmusic.bandcamp.com/</a></li><li><a href="https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack"></a><a href="https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack">https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack</a></li></ul></li><li>Cover Art Font -&nbsp;Chris Garrett - cgf_locust_resistance<ul><li><a href="https://www.dafont.com/cgf-locust-resistance.font" rel="nofollow noopener">https://www.dafont.com/cgf-locust-resistance.font</a></li></ul></li></ul>
<p><br></p>
<h5></h5>

<iframe width="720" height="450" src="https://www.youtube.com/embed/CxtBu_jvjds" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDQuZ2lm/original/V1fAgm.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDEuZ2lm/original/6n1tWy.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDMuZ2lm/original/49D4fP.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDIuZ2lm/original/CWujgb.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDUuZ2lm/original/aUHPRf.gif]]
<p>There are many different reasons people take the paths they do. Some of these paths have structure and look like the many paths we’ve all walked before, but there are other secret paths that many might not even recognise, and they have power as well. As creators of these paths we need to know how to recognise them, design them and create them with the rest of our team for all the different players who will walk our paths.&nbsp;</p>
<p>The Forest Paths Method For Narrative Design is the easiest and most practical way to begin creating interactive story on your own or collaboratively with your team. It’s a system that teaches you how to create narrative design using the fundamentals of drama built on the design pillars of your game while also helping you consider wider issues that often aren’t included in the process.</p>
<p>This guide will take you through that process and show you how to organise a cohesive narrative design in a way your whole team can understand, and much more:</p>
<ul><li>Quickly test new game ideas</li><li>Develop a whole narrative design before any production</li><li>Track changes throughout production</li><li>Collaborate and communicate narrative design to your team</li><li>Understand the impact of decisions before you make them</li><li>Analyse your own and other titles to understand their strengths and weaknesses</li><li>Match your narrative design with other considerations like marketing, streamers, accessibility and cultural sensitivities</li><li>Use genre narrative design patterns to kickstart the narrative design process of certain types of games</li><li>Communicate your narrative design intentions to other stakeholders</li></ul>
<p><strong>Templates Now Available</strong></p>
<p>2 basice templates are now included as a download with the resource to get you started.&nbsp;</p>
<p><strong>For Students</strong></p>
<p>Just organising your thoughts can be a huge problem starting out in narrative design. The Forest Paths Method includes tables, diagrams and the processes to use them effectively. At a basic level you can read this method in an afternoon and be using it for your projects the next day.&nbsp;</p>
<p><strong>For Professionals</strong></p>
<p>While simple on the surface, the different parts of the Method used together offers a deep and comprehensive way of organising your ideas in a way that can then be effectively communicated with your team. It’s plain language, and the deliverable is a diagram that scales and nests with all the information your team needs to keep developing – especially those who are reluctant to read documentation. &lt;br&gt;&lt;br&gt;
  </p>
<p><strong>For Writers New To Games</strong></p>
<p>The Method relies on tried and tested concepts like the dramatic question and set-ups and payoffs, as well as using accessible language so you won’t feel alienated learning the Method. Often the hardest part of transferring to a new medium is just knowing what questions you need to ask yourself and that is at the core of this method. It won’t tell you that you have to now write a certain way. It will help you understand the power of your own writing and how to marry that with the game design of your project in a way that helps you have those conversations with your team.</p>
<p><strong>For Everyone</strong></p>
<p>The Method doesn’t tell you how to write. It shows you how to organise your ideas and ask you and your team the right questions, so you understand the power of your own stories to connect with your players and audiences. While it acknowledges the benefits of some Western conventions, it also breaks those down so no assumptions are made that they should be the default. Instead, it shows you how to create your own bespoke narrative structure that allows you to draw on your own skills, style and lived experience for your game.&nbsp;</p>
<p>Creator Alexander Swords is an experienced narrative specialist who has worked across television, film, live performance and games. He’s worked on the genre-busting indie titles All Walls Must Fall, Dead Static Drive and Totem Teller and holds bachelor’s degrees in film and television and business, as well as a master’s in arts management.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc3MDQuanBn/original/qxceB7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDYuanBn/original/DC1C0w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDcuanBn/original/fCyYZo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDguanBn/original/F8OAg5.jpg]]
<p>Fortune-499 is a game about money and magic. You play a fortune teller working in the magical resources department of a large corporation. You engage in day-to-day office activities such as forwarding emails, attending meetings, fighting back hordes of monsters, and dealing with printer jams. With some tricky magic up your sleeve and your job on the line, it's up to you to build a future out of the hand you've been dealt.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/oeWwtaRJovQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzcucG5n/original/DtKNKP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzgucG5n/original/DBcsN4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzkucG5n/original/G8qv11.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzNDAucG5n/original/sa3mne.png]]
<p><em>Thirty years ago, thanks to the heroic efforts of a few brave heroes, magic was returned to the world. While it had previously been left in the care of a few, isolated clans, the power of magic now flowed as freely through the world as water through a river. The peoples of the world, invigorated by the new power available at their fingertips, have gotten to work. Small villages have grown into powerful city-states; trade kingdoms into empires. Great works rivaling those of the ancients spring up in matters of weeks and months.</em></p>
<p><em>With new power, however, comes new threats. Not all of those empires and city-states have everyone’s best interests in mind; some would rather seize all the power for themselves. As such, it is time for a new generation of heroes to rise to the task, and rid the world of peril once more!</em>
</p>
<p><strong>Four Elements' Light&nbsp;</strong>is my loveletter to classic JRPG&nbsp;<strong>Golden Sun,&nbsp;</strong>seeking to emulate its brand of storytelling and gameplay to the tabletop. It is powered by an engine inspired by the only good edition of the world's largest roleplaying game, giving many options for tactical, grid-based combat while still emulating more old-school JRPGs.&nbsp;<br></p><p><strong>The game includes:</strong></p><ul><li>A robust grid-based system for focused tactical combat</li><li>Four archetypes and power sources, allowing you to customize your playstyle to your liking</li><li>Spirits and summons that can change and empower your character on the fly</li><li>Mission-based advancement systems that reward personal goals and milestones</li><li>Solid exploration mechanics that reward players for seeing everything there is to see</li><li>A starting adventure to show off what kind of stories the game can tell</li><li>A catalogue of monsters for our heroes to overcome</li></ul><p><strong>What is yet to come?</strong></p><ul><li><em>Support for more high-level structured play. </em>The game has everything that's needed to play through the starting adventure, and shows by example how to go from there, but it will require additional content before continued play is properly supported.</li><li><em>Layout.&nbsp;</em>Right now, the PDF is a somewhat prettily laid out Google document, which while it is&nbsp;<em>functional&nbsp;</em>for showing off the game, it's not the best that it can be. Future versions of the game will be ported to some more proper layout software where we can get a cleaner version.</li></ul>

[img width=500 [https://img.itch.zone/aW1nLzU5NDc4MTIucG5n/original/gYmFhg.png]]
<p>EMIGRATE TO WESTERN EUROPE.<br>MAKE CORNFLAKE NACHOS.<br>CONFRONT THE GHOSTS OF A DEAD INTERNET.<br>PRETEND YOU DON'T SPEAK ENGLISH.<br>BUILD A BLENDER OUT OF PLASTIC SPOONS.<br>GET ARRESTED FOR APOLOGIZING TO A COP INFORMALLY.<br>KISS YOUR CRUSH.<br>START AN ARMED INSURRECTION.<br>WATCH ANIME.<br>DIE FIGHTING FOR YOUR RIGHTS IN A BLAZE OF GLORY.<br>START OVER IN NORTH AFRICA.<br>WATCH LESS ANIME THIS TIME.</p>
<p>Four Horsemen is a visual novel / SLG about homelands and the immigrant experience. Play as a group of four contemporary immigrant teenagers squatting in a World War II era machine gun bunker, trying to find a place for themselves in a pre-apocalyptic, present-dystopian country that has no place for them. Will you go native, turning against your own people to bury the past your parents fled to escape? Will you cling to your parents' identity at any cost, at the price of being a permanent stranger in your home country? Or will you strike out on your own, turning against both your homelands to shape a destiny for yourself? Love is all you need...and also improvised firearms.</p>
<p>Drawing from the developers' own lived experiences, interviews with current and former immigrant teens from around the world, and a year of painstaking anthropological research, featuring <strong>4 different main storylines,</strong> <strong>9 different endings, 12 different playable homelands </strong>(all of which play differently), and a multitude of agonizing, important decisions, Four Horsemen is the most heartwarmingly familiar, brutally honest video game about the immigrant experience ever created. One playthrough can be finished in a matter of hours, but you'll want to revisit it again and again to see all of the many stories the game has to tell...and to pursue that elusive dream of a land you can call your own.</p>
<p><strong>Exciting Bullet Points!!</strong></p>
<ul><li><strong>YOUR DECISIONS MATTER.</strong> Hard choices you make at the beginning come back to haunt you at the end. Characters turn out to be heroic or villainous depending on how you treat them--and they don't always reward you for treating them well.</li><li><strong>NO TWO COUNTRIES PLAY ALIKE.</strong> Each homeland has its own unique vocabulary, set of cultural values, prejudices, and history. Choices that are a good idea in one country turn out to be a reaaaaally bad idea in another. Like a real immigrant, you'll have to read your new culture and learn to adapt.</li><li><strong>NOT JUST BLACK AND WHITE.</strong> No faction reputation system! No alignment meter! Four Horsemen offers realistic, genuinely difficult moral choices, and to some questions there are no right answers--only different consequences.</li><li><strong>DELIGHTFUL CRAFTING SYSTEM.</strong> Make that cold, austere war bunker feel like home--dive into dumpsters scrounging for parts, or buy them with your earnings from your terrible day job, and make reasonable DIY facsimiles of things you can't afford! Characters interact with things you build. Make a disco ball and they'll throw a dance party, patch up that hole in the roof and they'll enjoy a quiet moment together on a rainy day. But beware--the system is not exactly fair to immigrants...</li><li><strong>TRIUMPH OVER HATE.</strong> A bigot pulls a knife on you--what do you do? Do you try to de-escalate the situation with words...or respond by drawing your own blade? Our combat system replicates the anxiety and tension of real violence, not a power fantasy.</li><li><strong>THE MOST ADVANCED PROFANITY SYSTEM IN A VIDEO GAME, EVER.</strong> Audited by real current and former teenaged native speakers! Learn how to cast aspersions on a person's ancestry in 10 different real-world languages!</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qrhtj41oAxk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyNS5wbmc=/original/vLlglc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyNy5wbmc=/original/v2BIgO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyOS5wbmc=/original/hNpjno.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDk0NC5wbmc=/original/tpW9zi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyOC5wbmc=/original/LdUioa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkzMS5wbmc=/original/FBncMs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDk0MC5wbmc=/original/Ck4t17.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkzNC5wbmc=/original/aReNpG.png]]
<p>Four Kids Play a Game is a tabletop role playing game about the creation of a new world and the personal development of those who would become this new worlds gods. Inspired by Homestuck by Andrew Hussie and the stories similarly inspired by it, the goal of this game is to define the adventures of a small group of children as they fight and work to create a new world after the apocalypse.</p>
<p>Taking a diceless, role-playing scene focused approach to the gameplay, Four Kids is about the development and discovery of its player characters more then anything else.&nbsp;</p>
<p>To play this game you will need:<br> - Three to Five People (One GM, and Two to Four Players)<br> - Several Sheets of Paper<br> - Pens and/or Pencils<br> - A Good Amount of Time</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzI4OTg1NDYuanBn/original/KloEte.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQ5OTQyNTUucG5n/original/nxkzmH.png" loading="lazy"><br></p>
<p>A never ending abstract landscape of rhythm and soft glamour. Wander the halls, rooms, and chambers. Encounter strange Denizens and get to know them better; befriend them, fall in love, just chill. Try and fill out your own blurred edges.</p>
<p>Fractal Romance is a tabletop role playing hangout. You will pick up a character to play and explore the Fractal Palace, generating its infinite sprawl and the Denizens that inhabit it, as you play.</p>
<p>You will need a deck of cards, a few friends, and a willingness to explore some chill times.</p>
<p><br></p>
<p>Fractal Romance was written for the <a href="https://itch.io/jam/record-collection-2k21" target="_blank">2021 Record Collection Jam</a>, and is inspired by the album&nbsp;<em>Swimmer</em> by Tennis.</p>
<p>&nbsp;Go check out the rest of the entries!</p>
<p><iframe src="https://open.spotify.com/embed/album/3vghyeIx26jtU7DdAW2bEb" width="300" height="380" frameborder="0"></iframe><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTIuanBn/original/IE2WWj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyNzkucG5n/original/MgL7GD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTMucG5n/original/2Kr513.png]]
<p>FRAMED Collection is a new compilation of the critically-acclaimed, multi-award winning noir puzzle games FRAMED and FRAMED 2.</p>
<p>Rearrange the panels of an animated comic book to craft the story of a noir-styled spy adventure. Presented in an extensive series of visual puzzles, requiring logic and imagination, each panel move changes the current narrative, leading to all kinds of comedic blunders, untimely deaths, and--when solved correctly--stylish heists, fast getaways and nail-biting escapades.</p>
<p>With multi-award winning, genre-bending puzzle design, stylish hand crafted art and animation, a satisfying difficulty curve, and an original live jazz soundtrack--fusing modern themes and funky beats--FRAMED Collection is a unique experience no other puzzle game can match.
</p>
<h2>Key Features</h2>
<p><strong>The Complete FRAMED experience<br></strong>FRAMED Collection is a new compilation of the award-winning, noir puzzle games FRAMED and FRAMED 2. Escape effortlessly into the stylish, pulp-noir spy world of FRAMED, before delving deeper with the more challenging prequel FRAMED 2.</p>
<p><strong>Simple, but uniquely clever puzzle design<br></strong>Select animated comic panels and move them around using your logic skills and your imagination to craft the best outcome. Getting the story ‘wrong’ is as much part of the experience as getting it ‘right’, with every rearrangement telling a different, satisfying--and sometimes very comedic--story.</p>
<p><strong>Hand-crafted noir art and animation<br></strong>From the first frame to the last, FRAMED Collection oozes with stylish, noir, award-winning art and animation. Unique, hand-drawn silhouetted characters, incredibly fluid animations, and beautiful, mysterious settings all bring the FRAMED world to life with a wink of mischievous personality.</p>
<p><strong>Multi-award winning, genre-bending design<br></strong>FRAMED Collection features a fusion of unique game mechanics and clever narrative puzzles that bend genres and constantly deliver a satisfying experience with every panel arrangement. A winner of multiple game awards, and a finalist of IGF 2015’s ‘Excellence in Design’ Award, Hideo Kojima named FRAMED his Game of the Year in 2014--“without any doubt”.</p>
<p><strong>An all-original live jazz soundtrack<br></strong>Featuring live jazz performances fused with modern themes and funky beats, the soundtracks to FRAMED and FRAMED 2 are as mesmerising as they are evocative, setting the mood and upping the mystery-laden tension.</p>
<h2>Praise for FRAMED:</h2>
<p>"My best game in this year without any doubt." –&nbsp;<strong>Hideo Kojima, Renowned Game Designer</strong>&nbsp;</p>
<p>"...an astonishingly well-crafted game... with gorgeous visuals, finger-snapping music, brilliant design, and a wonderful central concept. ...an absolute must-buy." –&nbsp;<strong>James Dominguez, Sydney Morning Herald</strong>&nbsp;</p>
<p>"Once in a while, a truly rare and unique game comes along that’s not just a perfect fit for touchscreens, but makes you wonder why it hasn’t been done before because it just seems simultaneously ingenious and obvious." -&nbsp;<strong>AppUnwrapper</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SEv9ulWpWyo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NjguanBn/original/L9ON6h.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDUuanBn/original/IKaKgr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NTAuanBn/original/BtSiEL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDMuanBn/original/EsEPn9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDcuanBn/original/ZK2NSa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NzAuanBn/original/w3zIsq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDYuanBn/original/f27VIq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NjkuanBn/original/fUK%2FeU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDQuanBn/original/wJk0mX.jpg]]
<h4>About the game</h4>
<p>In Frick, Inc. you'll drive various trucks using on-screen control panels. Each truck has a different control method and it's all made to be <em>"</em><em>Frick, Inc."</em> frustrating until you master it.</p>
<p><img src="https://i.ibb.co/0f00bvX/showcase.gif" loading="lazy"></p>
<ul><li><strong>Easy to learn, hard to master&nbsp;</strong>–<strong>&nbsp;</strong>You'll be switching between trucks (and control methods) in 40 levels to perform various&nbsp;tasks.</li><li><strong>Extra challenge in each level</strong>&nbsp;– Each of the levels contains an extra challenge, only for those daring enough to go the extra mile.</li><li><strong>Includes game assets</strong>&nbsp;– Ready to get into game development? Use the included 3D models to create your own game inspired by Frick, Inc.</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQyNzMzNDMucG5n/original/CHi2%2FV.png" loading="lazy"></p>
<h4>Bonus</h4>
<p></p>
<p>Also includes game assets <em>(CC0, 3D models)</em> to create your very own game inspired by Frick, Inc. The models are compatible with all popular game engines including Unity, Godot and Unreal Engine.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQyNzg0NDMucG5n/original/mPgOpN.png" loading="lazy"></p>
<h5>Requirements</h5>
<p>The game can only be played using a mouse. A keyboard or gamepad aren't supported or required. Windows and Linux&nbsp;compatible, not compatible with other operating systems.</p>
<p><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNLGames" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4MjIwNzIucG5n/original/g%2FhxGp.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNL" target="_blank" rel="nofollow noopener">Twitter</a> | <a href="https://www.facebook.com/KenneyNL" target="_blank" rel="nofollow noopener">Facebook</a></p>
<h6 class="text-center">Copyright © Kenney 2020 | All rights reserved</h6>
<h6 class="text-center"><a href="https://kenney.nl/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM3MDYxNjEucG5n/original/3CIJaX.png" loading="lazy"></a></h6>

<iframe width="720" height="450" src="https://www.youtube.com/embed/EPNE9hMSrVw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTgucG5n/original/SDcou9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTYucG5n/original/mAJdwp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzQ0MTIwMzEucG5n/original/nxEU9s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTkucG5n/original/rrE829.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzQ0MTIwNDMucG5n/original/MPS3FH.png]]
<p class="text-center">Stupid++ proudly presents...</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODMucG5n/original/ITTq%2BE.png" loading="lazy"></p>
<p>A faithful remake of PictoChat for Windows and Android.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODQucG5n/original/VGEQwY.png" loading="lazy"><br></p>
<ul><li>Faithfully handcrafted visuals derived from the original. 👀</li><li>Four chatrooms. 💬</li><li>Drawing suggestions. 📝🤔</li><li>Chat with up to&nbsp;65535 people at the same time (theoretical limit).</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM0NTAucG5n/original/WaeT%2FG.png" loading="lazy"></p>
<ul><li>Up to 4 colors. 🎨👩‍🎨</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM1MzguZ2lm/original/5iVkm8.gif" loading="lazy"><br></p>
<ul><li>Up to 36 colors (based on&nbsp;<a href="https://lospec.com/palette-list/pear36" rel="nofollow noopener">PEAR36</a>). 🎨👩‍🎨</li><li>A crown for a king. 👑</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM4MDQucG5n/original/on%2BqJZ.png" loading="lazy"></p>
<p>You have to be on the same network/WIFI&nbsp;to chat.</p>
<p>Stupidplusplus and FroggyChat are&nbsp;not affiliated, associated, authorized, endorsed by, or in any way officially connected with Nintendo Co., Ltd., or any of its subsidiaries or its affiliates.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDg5NTEucG5n/original/qAixdu.png" loading="lazy"><br></p>
<p><strong>Version 1.0</strong></p>
<ul><li>Initial release</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM3MzkucG5n/original/c0ETRj.png" loading="lazy"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDI5NzMucG5n/original/l3CCWb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDU3MjAucG5n/original/PMXOL2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM3MjMucG5n/original/jwvNyb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDQucG5n/original/1LFO1U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDgucG5n/original/LFhz6Z.png]]
<p>A short game about being stuck indoors with your family and making the most of it!<br>Made in a week during the <a href="https://itch.io/jam/pigsquad-9-year-anniversary-jam/entries" target="_blank">PIGSquad 9-Year Anniversary&nbsp; Stay-At-Home Jam.</a><br><br>Game by Marlowe Dobbe (<a href="https://twitter.com/marlowedobbe" target="_blank" rel="nofollow noopener">@marlowedobbe</a>)<br>Music by Jeff Cline (<a href="https://twitter.com/surreal_vgm" target="_blank" rel="nofollow noopener">@Surreal_VGM</a>)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzYucG5n/original/CNQNuj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzgucG5n/original/c1Gmv2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzkucG5n/original/mNGCSD.png]]
<p>In&nbsp;<em>From Orbit</em>&nbsp;you'll manage the crew of a small spaceship. Stranded deep in uncharted space, they need to make their way home. Journey from planet to planet, each procedurally generated with unique environments, challenges, and alien creatures.&nbsp;<br><br><strong>Explore</strong>&nbsp;<br>Scout out the richest resources and the deadliest critters, and discover unique challenges and powerful artifacts.&nbsp;<br><br><strong>Extract</strong>&nbsp;<br>You're going to need all the Ore and Crystal you can carry if you're going to mount a successful defense or purchase the upgrades you'll need to make it home alive.&nbsp;<br><br><strong>Excape</strong>&nbsp;<br>Err... Escape. The resources on each planet won't last forever, but the alien creatures willing to bite your legs off never seem to end, eventually overwhelming even the most stalwart crew. Hold out as long as you can... but don't throw your resources - or the lives of your crew - away to a lost cause. Always be prepared to make a timely exit when things start getting hairy.</p>
<p><strong>How To Play</strong></p>
<p>If you're new to RTS games and need some pointers, check out...</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-lKGVuyRkek" frameborder="0" allowfullscreen=""></iframe></div>
<p><strong><br></strong></p>
<p><strong>Soundtrack</strong><br></p>
<p><em>From Orbit</em>'s soundtrack was composed by&nbsp;<strong><a href="https://carlcorcoran.com/" rel="nofollow noopener">tenfour</a></strong>, and is available for purchase separately. If you've enjoyed the music in the game, please check it out!</p>
<p><a href="https://tenfour.bandcamp.com/album/from-orbit-original-game-soundtrack" rel="nofollow noopener">From Orbit (Original Game Soundtrack)</a></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-lKGVuyRkek" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTIuanBn/original/Lidqpy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTguanBn/original/7maQa9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTQuanBn/original/SjHyjb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTkuanBn/original/wO4dUp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MjEuanBn/original/5ogJkj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTcuanBn/original/iUt8zZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MjAuanBn/original/CVXzn5.jpg]]
<iframe src="https://open.spotify.com/embed/playlist/1KNoAAvHwAr9KH6DYTcr6B" width="100%" height="380" frameborder="0"></iframe>
<blockquote><em>All the Space Age dreams people carried with them peeled off as they left the stratosphere. Look close and you‘ll see them floating like trash bags in low earth orbit. Further away, it just looks like a greasy leftover smear of a halo round home.</em></blockquote>
<blockquote><em>You’re sick and fucking tired of puff pieces for nth-rate politicos, mindless accounts of the some thing that happened some where, and bottom-barrel soggy interviews with white supremacists. Nobody with cash wants you to tell the truth.
  </em></blockquote>
<blockquote><em>Well, today you were hired, along with some associates, to do some impossible reporting about the fifteenth annual Reagan Station moon dune rover race in Mare Insularum, round Kepler Crater, kicking up a lunar dust storm big enough to see from Earth with the naked eye. Half your brain said don’t even bother with this. The other, better half, hatched a plan, and the whole gang of you tore up the silver desert in a high-power rental rover in the glorious and uncompromising pursuit of a new mutation of the Space Age dream…</em></blockquote>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDUucG5n/original/RBRYjY.png" alt="What the hell is this?" title="What the hell is this?" loading="lazy"><br></p>
<p><strong>From Sea to Shining Sea</strong> is a GMless tabletop role-playing game for 2-4 players who're ready to open the dark heart of the shitty future. You all play as freelance journalists (when you're not out doing gig and part-time jobs to pay rent) hired to cover a sporting event in the <em>future</em>, on the <em>moon</em>. It's bland mouthpiece reporting out here.</p>
<p>Moon colonies, moon highways, moon casinos. Corruption, depravity, poverty. Ostentatious wealth and media misdirection.&nbsp;The future was meant to be better than this, but it's not, and all you are gonna take a look at the failures and the underbelly of moon society and be honest about it all, while having a hell of a time good and bad.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDcucG5n/original/yBSpje.png" alt="Show me the reviews!" title="Show me the reviews!" loading="lazy"><br></p>
<blockquote>"<span class="" style="color: inherit; font-size: inherit">Holy fucking shit, [From Sea to Shining Sea]&nbsp;is a goddamn treat. You ever wanna do drugs as a reporter covering the big dune race on the Dark Side of the Moon, all set to a soundtrack of Warren Zevon, Tom Waits, and more? . . .&nbsp;As your attorney, I suggest you take a look at From Sea to Shining Sea.</span>"</blockquote>
<p>–<a href="https://twitter.com/AdiraSlattery/status/1217843001621450756" target="_blank" style="font-size: inherit" rel="nofollow noopener">Adira Slattery</a>, game designer</p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDkucG5n/original/Q1G1%2BN.png" alt="Dangerous content" title="Dangerous content" loading="lazy"><br></p>
<p><strong>CONTENT NOTICE:&nbsp;</strong>This game is heavily inspired by <strong>Fear and Loathing in Las Vegas</strong> by <em>Hunter S. Thompson</em>&nbsp;(and to a lesser extent by <strong><a href="https://tinybuild.itch.io/diaries-of-a-spaceport-janitor" target="_blank">Diaries of a Spaceport Janitor</a></strong> by <em><a href="https://www.tinybuild.com/diariesofaspaceportjanitor" target="_blank" rel="nofollow noopener">Sundae Month</a></em>). It includes, mentions, or opens the door to: drugs, sex, miscellaneous but mostly meaningless&nbsp;threats of&nbsp;violence, and all manner of other things you might find in <strong>Fear and Loathing</strong>.</p>
<p>Mostly, this is what you put into it, and aside from excessive&nbsp;drugs and a little violence the game rules documents&nbsp;are pretty tame,&nbsp;but there's always some&nbsp;bias&nbsp;in a game where your moves include "<strong>Bullshit</strong>", "<strong>Trip"</strong>, and "<strong>Freak Out</strong>". Stay safe and check out the <a href="http://bit.ly/ttrpgsafetytoolkit" target="_blank" style="font-size: inherit" rel="nofollow noopener">TTRPG Safety Toolkit</a>&nbsp;compiled by <em><a href="https://kiennas.itch.io/" target="_blank">Kienna Shaw</a></em> and <em><a href="https://twitter.com/jl_nicegirl" target="_blank" rel="nofollow noopener">Lauren Bryant-Monk</a></em>.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MTMucG5n/original/VqlBs%2B.png" style="max-width: 100%; font-size: 14px" alt="Show me the goods!" title="Show me the goods!" loading="lazy"><br></p>
<p><strong>CONTENTS:&nbsp;</strong>The zip archive for this game includes:</p>
<ul><li>Full-colour light-mode and dark-mode rules pdfs</li><li>An A4/letter-sized zine-formatted black and white version</li><li>A .txt version for screen readers</li></ul>
<p>Check the images on the right to see what the&nbsp;dark-mode, light-mode, and B+W versions look like.</p>
<p><strong>PREVIEWS:</strong> You can find free previews of the game down below in the 'Demo' section, in two different screen reading colour palettes.</p>
<p><strong>EARLY 🦉 BIRD 🖕COPIES:</strong>&nbsp;Free full versions of the game, highly limited in number.&nbsp;They're down below. Get them before they get you! Quick! There's only 6 to start with!&nbsp;Are they gone?</p>
<p><strong>COMMUNITY 🤝 COPIES:</strong> This game has community copies - that is, every time someone buys it, I'll add a free copy that anyone in a less-than-great financial situation can download no-questions-asked. There are 10 to start with.&nbsp;Find them below.</p>
<p><strong>ACCESSIBILITY:</strong> This game includes light-on-dark (lod) and dark-on-light (dol) versions for screen reading, a black and white print-friendly A5 zine-formatted version, and a .txt version for text-to-speech apps. Let me know if there's anything more I can do on this front!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4MjczNzMucG5n/original/3MlrPR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjIucG5n/original/vo7mfE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4MjczNzQucG5n/original/5OMblh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjMucG5n/original/aKjv3o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4Mjc1MTcucG5n/original/7gBvNl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjQucG5n/original/ayKCiT.png]]
<p>Explore more than 30 simple but beautiful diorama-like rooms in this relaxing adventure / puzzle / hidden object game hybrid.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NDU3ODcuanBn/original/31OyIb.jpg" loading="lazy"><br></p>
<p>Collect items, solve simple puzzles, and piece together the clues to unlock and rekindle the five shrines.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NDU3NzkucG5n/original/wcD%2FbR.png" loading="lazy"><br></p>
<p>A very pleasant way to spend 30 - 60 minutes.</p><p><em>If you'd like to support Spinfoam Games in an ongoing way, <a href="https://www.patreon.com/spinfoamgames" target="_blank" rel="nofollow noopener">check out my Patreon page</a> -- if you subscribe at the $3 tier you'll receive a copy of <strong>from view </strong>as a benefit!<br></em></p><p><em>Also, if you are a content creator and want to check out <strong>from view</strong> for your channel there is a campaign active on Woovit: <a href="https://woovit.info/from-view" rel="nofollow noopener">https://woovit.info/from-view</a></em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjEuanBn/original/qqVNCz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjIuanBn/original/klVM9w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjQuanBn/original/vsGyLr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjMuanBn/original/yLdxpa.jpg]]
<p><strong>Did you miss the <a href="https://www.kickstarter.com/projects/eliseitz/fruit-of-law" rel="nofollow noopener">Kickstarter</a>? Don't worry, t</strong><strong>his is where you can get a digital copy of  Fruit of Law. Want a physical copy of the mini zines head over to&nbsp; <a href="https://floatingchair.club/collections/zines/products/fruit-of-law" rel="nofollow noopener">Floatingchair.club</a>&nbsp;or <a href="https://spearwitch.com/collections/new-arrivals/products/fruit-of-law" rel="nofollow noopener">Spearwitch.com</a>!<br></strong></p>
<p><strong>Fruit of Law</strong> was originally inspired by the folk tale that all pomegranates have 613 seeds which&nbsp;represent the 613 commandments in the Torah, and from that symbolic myth a game was born.</p>
<p>The game explores what it means to write the text that makes up the moral fiber of future of their society. The players take on the roles of elders working with and against each other to set down rules for future generations. The central mechanic involves a physical pomegranate that is consumed during play.</p>
<p><strong>Fruit of Law</strong> is designed for 4-10 players and can be played start to finish in about an hour. The rules are loose and encourage cooperative storytelling with the players pushing each other in new and exciting directions.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzU4MTE2NjUuanBn/original/5yPzEk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzU4MTE2NDMuanBn/original/608eFj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzM5MTcxNDAuanBn/original/DHIpR3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzQwMDQyNzQuanBn/original/oMXxRo.jpg]]
<p><strong>PLEASE NOTE</strong></p>
<p>Fugl is currently in alpha, meaning we are still adding new features to the game and improving stability and performance. We are looking for players who want to play the early version of the game, and hopefully also get involved in its development.&nbsp; The game currently has the following requirements:</p>
<ul><li>64 bit only</li><li>For Windows/Linux OpenGL 4.3 is required, Intel GPUs not supported</li><li>For Mac, Metal 1.1 is required</li><li>A fairly modern computer with a good chunk of gpu memory is required at this stage (around 2 GB). We are working on lowering the requirements.</li><li>3 GB of harddrive space</li></ul>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMDEucG5n/original/D3CWbY.png" loading="lazy"><br></p>
<p><strong>WHAT IS FUGL?</strong></p>
<p>Fugl is a sandbox game where you create the story, playing as a shape-shifting bird. Relax and feel the breeze under your wings as you glide serenely across picturesque landscapes, or kick up the excitement and soar up steep cliffs like an eagle. With no set rules the free roaming gameplay lets you discover the beauty and secrets of the world at your own pace and dares you to make your own meaning for a stress-free experience.&nbsp;</p>
<p>Fugl’s world is a vast and unique voxel playground. It is procedurally generated yet carefully crafted, with diverse areas to explore, from icy wind blown caves to tropical paradises to great deserts and old growth forests. Each environment is rich in diverse wildlife with hundreds of animals to find. You may even be lucky enough to stumble across rare mythical creatures. Come close to any of these creatures and you have the chance to take on new visual characteristics and flying behaviours inspired by them.</p>
<p>Give the world of Fugl your own creative touch by personalising it in the extensive level creator and craft your custom bird in the avatar editor.&nbsp;</p>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMDUucG5n/original/qfx5pD.png" loading="lazy"><br></p>
<p><strong>CURRENT FEATURES</strong><br></p>
<ul><li>Freely control a bird and enjoy the thrill of flying&nbsp;</li><li>Experience meditative and task free gameplay at your own pace</li><li>Sink into the beautiful voxel art style</li><li>Discover the vast carefully crafted world</li><li>Explore varied areas - from tropical beaches to snowy mountains and alien worlds</li><li>Take on new visual characteristics and flying behaviours inspired by other animals&nbsp;</li><li>Make your own custom bird in the avatar editor</li><li>Shape your personal world with the level creator</li><li>Enjoy the relaxing soundtrack created with the sounds and ambience of nature</li><li>Receive regular content updates throughout Early Access, including new areas, new animals and new features</li></ul>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMjAucG5n/original/YPZ%2F4P.png" loading="lazy"><br></p>
<p><strong>ROADMAP</strong></p>
<p>We are very proud of what we have accomplished so far, but we still have a few things we'd like to add to the game, before we come out of Early Access. The following are features that we'd really like to add, but everything is subject to change as development is still on-going.</p>
<p><strong>Feel Free as a Bird</strong></p>
<ul><li>Expand on the core experience of flying: Add wind, thermals, clouds, day/night-cycle and different kinds of weather.</li><li>Just as there are many different types of birds, we'd like to be able to support many different ways of enjoying life as a bird in Fugl.&nbsp; Some are looking for a more chilled experienced,&nbsp; and some for a frantic challenging experience. We are working on ways to support different modes of play.</li><li>Birds can do more than just glide on the winds, break, speed up or hop on the ground and we want to support as many special manoeuvres and abilities as we can!&nbsp;</li><li>Fugl is not the only living thing in the world. We want the wildlife to be able to influence you, and you to influence them!</li></ul>
<p><strong>A Living World<br></strong></p>
<p>The animals in Fugl are really important for providing a sense of life, interaction and immersion in the world.</p>
<ul><li>Improved AI For the animals</li><li>Better physics For the animals</li><li>Physics interactions between the player and the animals</li><li>Faster and improved distribution of animals in the world</li><li>Animal motivations to make them more interesting to interact with</li><li>More animations</li></ul>
<p><strong>Environments &amp; Level Creator</strong></p>
<ul><li>Support for more procedurally generated content</li><li>More support for user generated content like voxel models</li></ul>
<p><strong>Rendering, Hardware and Platforms</strong></p>
<ul><li>We are old-school so we are still looking to improve performance and reduce memory requirements wherever we can!</li><li>We still have a few rendering tricks up our sleeve that we are working on</li></ul>
<p><strong>Misc</strong><br></p>
<ul><li>Support More Languages</li></ul>
<p>Fugl Discord server: <a href="https://discord.gg/8Cb4Uya" rel="nofollow noopener">https://discord.gg/8Cb4Uya</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Bk7fDYj7YkM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTUuanBn/original/IXUWS6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTcuanBn/original/NjDAWB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTAuanBn/original/J6SkuL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTYuanBn/original/lyP9ZV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTkuanBn/original/gUTjXr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTEuanBn/original/tjrfVv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTQuanBn/original/oKMXdF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTIuanBn/original/K8NLJQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNjAuanBn/original/c3ZXIQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTMuanBn/original/SVg9Ic.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTguanBn/original/hdC24O.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNjEuanBn/original/nlNn7k.jpg]]
<p>The forest stands old. When the fog rolls in at dusk, and the boots of mailed adventurers crush stems and ferns, these trees uproot. Not quenched by rain or river, the forest drinks the blood of its invaders. This forest is old, full of memory, and anger.<br></p>
<p>You stand, within the core of ancient aspen or old oak, feeling the flow of sap in spring and the frozen silence of icy winter. As the forest breathes, you burn the bones of those who sought to carve through. Cruel dryads, all, you and your fellow spirits spire upwards toward the light of stars, and score the stone beneath your roots with deep cracking force.</p>
<p>And one day hatred walks in your domain. Fire and steel assails wood and stone as armored knights, gnarled wizards, and shrike sharp rogues bring death with them. Passing through wood like doors you emerge, recondite and wielding blades of razor thin fern. You defend the woods. And for now the intruders melt into the dirt and you sleep once again. If a hate-filled heart screams in the forest and no one is around to hear it, does it still make a sound?</p>
<p>Full of Memory And Anger is a meditation game of time and stillness, interrupted by brief scenes of ecological retribution. You play fae creatures living in the heartwood of old growth trees, dispensing asymmetrical retaliation to intruders in your realm. These intruders may bring with them evil and hate. They may be powerful fantasy adventurers, formidable masters of industry, or indiscriminate agents of chaos and pollution. You will always crush them in terrifying ways.</p>
<p>This game is inspired by The Skeletons by Bully Pulpit Games. It is a game of answering questions, but more importantly it is a game of silence and of waiting.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQyMjgucG5n/original/48zn6J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxODYucG5n/original/onBoEN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxOTEucG5n/original/HaPhX%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxODcucG5n/original/WeX0U7.png]]
<p><img src="https://img.itch.zone/aW1nLzU1MjE0MjQucG5n/original/%2FCPjEI.png" loading="lazy"><br></p>
<p>A light exploration/collection game.</p>
<p>Explore an open world inexplicably filled with instructions for creating capsules that hold furniture.&nbsp; Aided by this newfound knowledge, help the local inhabitants&nbsp;with their various furniture related needs - and decorate your own home as well as&nbsp;any other part of the world as desired.</p>
<p>Make your exploration easier with perks available from an upgrade machine located near your house. The locals will gift you currency for the machine&nbsp;in exchange for your help.</p>
<p><img src="https://img.itch.zone/aW1nLzU1MjQwNjkucG5n/original/E3qECU.png" loading="lazy"><br></p>
<p><strong>Basic controls</strong></p>
<ul><li>movement with <strong>WASD</strong></li><li>open inventory with<strong> i</strong></li><li>enter furniture edit mode with <strong>e</strong></li><li>jump with <strong>spacebar</strong>, <strong>hold </strong>to use fuel (once unlocked)</li><li>open save/exit menu with <strong>Esc</strong></li><li>with radar unlocked, click the desired icon in the 'recipe' tab to track and then toggle with <strong>q</strong></li></ul>
<p><img src="https://img.itch.zone/aW1nLzU1MjQwNjgucG5n/original/66Vik%2B.png" loading="lazy"></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MjI0NDkucG5n/original/%2Bl3%2FkE.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MTY0NDkuZ2lm/original/GXTGGx.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MjM5ODcuZ2lm/original/5WO15o.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1NTIwNjAuZ2lm/original/CDi5ew.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MjQwNTUuZ2lm/original/n%2BcQ2V.gif]]
<p>Future Unfolding is an action adventure that is all about exploration. Your goal is to unfold the mysteries and solve the puzzles hidden in the beautiful landscapes around you. There are no tutorials, and no one is telling you what to do.</p>
<p>During your journey you encounter different types of wild animals. Some of them are friendly and helpful. Other animals are dangerous — deadly, even. You need to avoid them, or find ways to turn them into friendly creatures.</p>
<p>You can leave the beaten path at any time and hunt down secrets in the forgotten woods. Or go explore in hidden caves. It's okay to get lost — a detailed auto-map helps you to orient yourself. Over time you map out more and more of the vast environments. There is always a way out. But where to go after?</p>
<p><a href="https://www.esrb.org" rel="nofollow noopener"><img src="http://az750008.vo.msecnd.net/images/esrb-08b9ec58.png" style="height: 76px" loading="lazy"></a></p>
<p><a href="http://www.pegi.info" rel="nofollow noopener"><img src="http://az750008.vo.msecnd.net/images/pegi-7-8e52ce34.png" style="height: 76px" loading="lazy"></a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ihyrf2jfpIk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwNS5qcGc=/original/2F6nOF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwMi5qcGc=/original/q6%2Fp3B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwMy5qcGc=/original/ECchLA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwNC5qcGc=/original/JO4MsJ.jpg]]
<p><span></span></p>
<div></div>
<iframe src="https://gfycat.com/ifr/NegligibleFluffyCottontail" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="405"></iframe>
<p><strong><br>Nail the perfect line in the future's most challenging stunt sport!<br><br></strong>Grab your bike and hit the rails in FutureGrind, a stylish stunt-platformer all about tricks, skill, and speed. Use your futuristic bike to chain together huge combos on tracks made of floating rails, but watch out: touch the wrong color and you'll explode instantly!<br><strong><br></strong><br></p><iframe src="https://gfycat.com/ifr/LikelyBeautifulJunebug" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="402"></iframe>
<p>Keep your sponsors happy and you'll find yourself earning new bikes and racing mind-bending tracks built for the pros. But not everything is as it seems. Someone is watching your every move. Who is it, and what do they really want with you?</p>
<p>Think you have what it takes? Test your limits while grinding to the bass pounding beats of an original soundtrack.</p>
<p><strong>Color Blind Mode</strong><br>For color blind players, FutureGrind's colors are customizable so that you can play in a way that works for you.</p>
<iframe src="https://gfycat.com/ifr/InsistentVacantKakarikis" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="405"></iframe>
<p><strong>Features:</strong></p>
<ul><li>Dozens of hand-crafted tracks to test even the most skilled players</li><li>Different bikes, each with their own unique style of play</li><li>Chain tricks together in a deep combo system that rewards creativity</li><li>Instant restarts (you'll need them!)</li><li>Earn the top awards in score attack mode</li></ul>
<iframe src="https://gfycat.com/ifr/UnsungThankfulCygnet" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="402"></iframe>

<iframe width="720" height="450" src="https://www.youtube.com/embed/eIUSc9N9q6g" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4MzguanBn/original/qkFWID.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4MzkuanBn/original/fX2WBf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDMuanBn/original/grsvsk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDAuanBn/original/Eqt9ri.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDEuanBn/original/1y8F1F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDIuanBn/original/wfrUTv.jpg]]
<p>After a timid sheep, a bookworm goose, and a&nbsp;heroic bunny camp out a storm,&nbsp;they wake up in a strange new world full of skateboards, carnivals, manga and hot dogs!&nbsp;Welcome to <strong><em>Fuzzy Road Home</em></strong> -&nbsp;a quirky&nbsp;RPG about a buncha gay furs just tryin to get home! Join the poly relationship of&nbsp;Peep, Juice, and&nbsp;Honey on their comedic quest back to a warm bed!</p>
<p class="text-center"><strong><a href="https://thebittersoul.itch.io/fuzzy-road-home/rate?source=game" target="_blank">✨If you enjoy the game, please leave a rating, it helps a lot!✨</a><br></strong></p>
<p class="text-center"><a href="https://twitter.com/primxie" target="_blank" rel="nofollow noopener"><strong>🎨Promotional Artwork By Lucas Prim!🎨</strong></a><br></p>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</del><br></p>
<p class="text-center"><strong>This game contains imagery which may not be suitable for those with&nbsp;photosensitive epilepsy!&nbsp;</strong><strong>Please take care of yourself &lt;3!</strong><br></p>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</del></p>
<p><strong>Features:</strong></p>
<p>- 3 cute goobers you'll play as throughout the game, each with their own unique character arc!</p>
<p><img src="https://img.itch.zone/aW1nLzU3NjIyNTkuZ2lm/original/6dL%2Bpq.gif" loading="lazy"><br></p>
<p>- A short, charming&nbsp;story featuring a goofy cast of characters with quirky designs and personalities!</p>
<figure><img src="https://img.itch.zone/aW1nLzU3MDUwNjYuZ2lm/original/eTdmgo.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ3OTIuZ2lm/original/H%2FDJzt.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ3OTguZ2lm/original/KHILdP.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MTAuZ2lm/original/DE%2FQ69.gif" loading="lazy"></figure>
<p><del></del></p>
<p>- Experience the beginning of the prophesied war between&nbsp;<strong><em>Mains</em></strong> and <strong><em>Inverts</em></strong>: in this world,&nbsp;there are two sides to every coin... sometimes even three... er, well, no, by definition coins only have two sides, but, uh, er-<br></p>
<p><img src="https://img.itch.zone/aW1nLzU3MDYyNTcuZ2lm/original/dOLXAv.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDYyNTkuZ2lm/original/O8xYD1.gif" loading="lazy"><br></p>
<p>- jpeg the horse. yep.</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ3MDEuZ2lm/original/dB2kot.gif" loading="lazy"></p>
<p>- A pretty neat art style + an even MORE neat original soundtrack which got left in the sun for a bit too long and now it's starting to smell, ehhh...</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDYyMTUuZ2lm/original/f%2B5EDb.gif" loading="lazy"><br></p>
<p>- Get gripped by the&nbsp;metaphysical tentacles of the legendary hexapus!<br></p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ3MjcuZ2lm/original/dWRvMs.gif" loading="lazy"><br></p>
<p>- A whole lotta red slices of strawberry pie to gobble down which may or may not lead to a secret ending! :3</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><br></p>
<p><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</del></p>
<p><a href="https://docs.google.com/document/d/1D6MgndLQpVDBFTwQtirBA-DkxXjJZwaCMOGzM2QIXM4/edit?usp=sharing" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NzY0NTgucG5n/original/oYxNMF.png" loading="lazy"></a><br></p>
<p><a href="https://www.patreon.com/thebittersoul" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NDY0MjMucG5n/original/nsYyF1.png" loading="lazy"></a></p>
<figure><a href="http://discord.gg/Be2KtRmhBK" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NDY0MDQucG5n/original/Igj3g4.png" loading="lazy"></a></figure>
<figure><a href="https://thebittersoul.bandcamp.com/album/fuzzy-road-home-ost" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NDY0ODQucG5n/original/H1u%2BBk.png" loading="lazy"></a></figure>
<figure><a href="https://linktr.ee/thebittersoul" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NDY0NDkucG5n/original/HmCm%2FJ.png" loading="lazy"></a></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/FU8pX__MZ6E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NjMxMDIucG5n/original/%2FdP6sI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTEwNjkucG5n/original/eHx3aX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTEwOTQucG5n/original/UAJTCU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODAucG5n/original/iSrcgf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODgucG5n/original/FupTZC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODcucG5n/original/rnrRiU.png]]
<p>The people of the mountain are sparse, tiny huddled hamlets and isolated livestock farmers; they need each other, love and hate each other, in the way that subsistence communities must. And they need you, love and hate you, because you're one of them, and not one of them: you are one of the witches of the mountains.</p>
<p>You are one of a handful of overworked, alienated, vital people, one foot in the Here, one planted in the Else. They might call you and your peers a coven, were you somewhere more cosmopolitan. As it is, you are who you are, and whatever comes, you will have to be sufficient: <em>une galére des sorcières.</em></p><p><em>(As featured in a Halloween charity fundraising one-shot Twitch stream by&nbsp;<a href="https://www.twitch.tv/friendswhorolldice" rel="nofollow noopener">Friends Who Roll Dice</a>!)</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY3NjY3LzM2MTY4NTUucG5n/original/m3CrXc.png]]
<p>Another day under the hard sun, another day of discovery and to fight Ganancia.<br></p>
<p>The world is at an end, resources were used without parsimony.</p>
<p>A minimalist tri-fold pamphlet game on a world plagued by scarcity and the result of our current society, explore and live in it as it is yours now.&nbsp;</p>
<p><em>"<span></span>Society, have mercy on me<br>I hope you're not angry if I disagree<br>Society, crazy and deep<br>I hope you're not lonely without me"</em></p>
<p class="text-right">- Society, Eddie Vedder</p>
<p><iframe src="https://open.spotify.com/embed/track/3bHhUEOTIbezeZ856R0BX5" width="300" height="380" frameborder="0"></iframe></p>
<p>Leave a review or at least rate if you enjoyed the game.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjAucG5n/original/23Do%2FG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjEucG5n/original/y6Nuwy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjIucG5n/original/wmEoD6.png]]
<p>A contemplative world-building game / toy.&nbsp;Take your time and&nbsp;tweak this or that&nbsp;little world.</p>
<p>Made by <a href="http://twitter.com/EnricLlagostera" style="font-size: inherit" rel="nofollow noopener">Enric Llagostera</a>. Music: "flying around in space", by <a href="https://holykonni.bandcamp.com/" style="font-size: inherit" rel="nofollow noopener">Holy Konni</a>. Inspired by <a href="http://ishisoft.com/archives/884" style="font-size: inherit" rel="nofollow noopener">This Precious Land</a>, by <a href="https://twitter.com/ishisoft" style="font-size: inherit" rel="nofollow noopener">Craig Forrester</a>.&nbsp;More info about the game and its development on the&nbsp;<a href="https://enricllagostera.itch.io/bonsai-worlds/devlog/111664/remake-incoming" target="_blank" style="font-size: inherit">devlog</a>.</p>
<p>You can use JKL to change the game speed. The IOP keys control zoom, as well as the mouse wheel. You can pan the camera with WASD or arrow keys or space + left-click or by right-clicking anywhere. ESC exits the game.</p>
<p>The game is available in English and Brazilian Portuguese. O jogo está disponível em português do Brasil&nbsp;e inglês.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/LSt4go6k9o0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni8yNzk1MDU5LnBuZw==/original/9HwTXg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni84MDEwLnBuZw==/original/7%2FcPpp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni8yNzk1MDYwLnBuZw==/original/O7kD6S.png]]
<p>A Game Boy style 8*8px farm tileset, with a GB Studio compliant colour palette.&nbsp;<br></p>
<ul><li>666 unique tiles</li><li>5 colours (1st colour transparent)</li><li>7&nbsp; complete buildings</li><li>Over 30 ground tiles</li><li>Indoor and Outdoor tiles</li><li>And many decoration objects</li></ul>
<p>Includes a .png file and a .pmp file for use with ProMotion NG. ProMotion NG not required to use .png and not required to see and use all tiles.</p>
<p>License:&nbsp;</p><ul><li>Can be used and edited for commercial and academic game development purposes.</li><li>Can be used for table top game purposes.</li><li>It is recommended that If the assets are used&nbsp;for commercial use, an additional donation is made at&nbsp;<a href="https://ko-fi.com/gamedevmum" rel="nofollow noopener">https://ko-fi.com/gamedevmum</a></li><li>Not to be sold-on as assets or in a bundle in edited or original form.</li></ul><p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMjUuZ2lm/original/GgrKqu.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMzYuZ2lm/original/bZOkQR.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMjYucG5n/original/DwpBPl.png]]
<p>It's been a year since the Typhon Incident, when a biomonster from the Age of Superpowers awoke and rampaged across the Earth. Aegis Overlord, having consolidated power on Luna, begins preparation to extend their domination across the solar system. The L5 Alliance attempts to maintain a fragile peace while their member-states bicker and war among themselves. To make matters worse, the cyberpop band Love Magnet just announced that they're splitting up. I trust that all of you know what this means.</p>
<p><strong><em>It's time to fire up your giant robot and go do some stomping.<br></em></strong></p>
<p>GearHead Caramel is the third game in the GearHead series. Your character can play through a series of adventures set in various times and places in the GearHead universe. Currently there are two adventure modules, with more to follow.<br></p>
<p>You don't need to have played the previous two games to jump straight in. Features of GearHead Caramel  include a detailed mecha build + customization system, procedural story generation, lifepath based character creation, a portrait editor, both personal and mecha scale combat, cyberware, and the ability to import characters from GearHead Arena.</p>
<p>GearHead Caramel is open source; the Python source code for the game may be <a href="https://github.com/jwvhewitt/gearhead-caramel" rel="nofollow noopener">downloaded for free from GitHub</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/b1441O0PT5E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MDYuZ2lm/original/gDZXCe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MTYucG5n/original/O2SxdL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MTMucG5n/original/ptiTJo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MDgucG5n/original/L2EupP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MjUucG5n/original/i%2FZ%2BA0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MzkucG5n/original/MwUaLH.png]]
<p><strong><em>When stories break down, you send in the Genrenauts!</em></strong><br></p>
<p>Struggling stand-up comic Leah Tang is offered a once-in-a-lifetime chance to join the Genrenauts, a secret organization of dimensional travelers. Leah learns that our world is just one of many, and every other world is the home of a story genre — Science Fiction or Romance, Fantasy or Western — populated by archetypal characters and constantly playing out familiar stories.</p>
<p>The Genrenauts’ mission: find and fix broken stories. If they fail, the ripples from the story worlds will cause havoc and devastation on their home world.</p>
<p>Leah joins the team and dives head-first into the adventure. But the stories are breaking faster and worse than ever before. Will Leah rise to the occasion, or will she end up as just another broken story?</p>
<p><strong>An adventure science fiction series for all fans of Leverage, Quantum Leap, or Redshirts!</strong></p>
<p>Contains all six novellas from Season One of the r/Fantasy "Stabby" Award-finalist series:</p>
<p><em>The Shootout Solution * The Absconded Ambassador * The Cupid Reconciliation * The Substitute Sleuth * The Failed Fellowship</em>&nbsp;(Part 1 &amp; 2)</p>
<p><u><strong>Brought to you by the support of hundreds of Kickstarter backers!</strong></u></p>
<p>Cover art by Thomas Walker, Graphic Design by Sean Glenn<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/GDB5YNdNJjw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzE5NDQ2NjcuanBn/original/mXBf32.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzIyOTA5MDgucG5n/original/4T5%2F9Y.png" alt="Get In The Robot" title="Get In The Robot" loading="lazy"><br></p>
<h2>A Storytelling Card Game About Saving The World With Lasers, Giant Robots, and Bureaucracy.</h2>
<p><strong>By <a href="https://twitter.com/mqsalmon" target="_blank" rel="nofollow noopener">Mitchell Salmon</a>.</strong></p>
<p><em></em></p>
<p><em>The first monster appeared five years ago. It rampaged across the country. The loss of life was catastrophic.</em></p>
<p><em>After hundreds of hours and millions of dollars spent, the leaders of the world considered the fallen body of the monster and said, “There must be a better, <strong>more awesome</strong> way of defending the world.”</em></p>
<p><em>This is how <strong>the Agency</strong> was established in the shadows at the edge of the law. It was set up with funding from major world governments, and with an Oversight Committee representing political and corporate interests to keep it in line. It was given a singular mission: defend humanity from monster incursion by whatever means necessary.</em></p>
<p><em>The Agency built the ultimate monster-fighting weapons: robots, standing ten storeys tall and armed with cutting edge weaponry, piloted by heroes drafted and trained to fight as humanity’s last and best hope. To develop and maintain the robots, a huge web of infrastructure, engineering, and administration was built to keep the Agency running in the face of increasingly dangerous monster attacks.</em></p>
<p><em>You are part of that support team, keeping the Agency ready to deploy a giant monster-killing machine at a moment’s notice. Most days it’s just office work. Forms, routine maintenance, and trust building exercises. But every few weeks the red light flashes and the alarm blares. A monster has been spotted.</em></p>
<p><em><strong>Today is one of those days.</strong>&nbsp;The klaxons are blaring. Commanders are shouting orders. In mere hours, the monster will be on top of the city.&nbsp;</em></p><p><em>Everyone needs to do their part.&nbsp;</em><em>It’s time to save the world.</em></p>
<p class="text-center">*</p>
<p><em>Get&nbsp;In The Robot!&nbsp;</em>is a storytelling card game for&nbsp;<strong>2-4 players</strong>, utilising a standard&nbsp;<strong>deck of playing cards</strong> and a&nbsp;<strong>six-sided die</strong>. You will tell the story of a team of&nbsp;mid-level engineers, or accountants, or a human resources managers working for <strong>the Agency</strong>, the shadowy, para-military, government-sponsored, corporate-controlled last and best hope for humanity against the monster invasion.</p>
<table>
<tbody>
<tr>
<td><h3>Details</h3></td>
<td><h3>Themes</h3></td>
</tr>
<tr>
<td>
<p><img src="http://secretprincegame.com/image/icon/group.svg" style="height: 16px" loading="lazy">&nbsp;2-4 Players</p>
<p><img src="http://secretprincegame.com/image/icon/time.svg" style="height: 16px" loading="lazy">&nbsp;1-2 Hours, 1 Session</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="height: 16px" loading="lazy">&nbsp;Ages 12+</p><p><img src="http://secretprincegame.com/image/icon/gmless.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy">&nbsp;No GM or preparation required<br></p>
</td>
<td>
<p><img src="http://secretprincegame.com/image/icon/robot.svg" style="height: 16px" loading="lazy"> Mecha Sci-Fi</p>
<p><img src="http://secretprincegame.com/image/icon/office.svg" style="height: 16px" loading="lazy"> Office Work&nbsp;and Bureaucracy</p>
<p><img src="http://secretprincegame.com/image/icon/team.svg" style="height: 16px" loading="lazy"> Cooperate with Friends<br></p>
<p><img src="http://secretprincegame.com/image/icon/crown.svg" style="height: 16px" loading="lazy"> Win or Lose Together</p>
<p><img src="http://secretprincegame.com/image/icon/dice.svg" style="height: 16px" loading="lazy"> Draw cards and roll dice to find out what happens<br></p>
<p><img src="http://secretprincegame.com/image/icon/book.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Tell a story together<br></p>
</td>
</tr>
</tbody>
</table>
<h3>What's&nbsp;Included</h3>
<p>Your download of&nbsp;<em>Get In The Robot!&nbsp;</em>includes a .pdf copy of the rules and card table to give meaning to a deck of playing cards.&nbsp;</p>
<p>You need a&nbsp;<strong>standard deck of playing cards, including Jokers </strong>and <strong>one six sided die&nbsp;(1d6)</strong>.</p>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4NzEyNDQuanBn/original/3Xat9K.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjMuanBn/original/017sKA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjcuanBn/original/ueiFub.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjQuanBn/original/aSA6oX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjUuanBn/original/cXfeE0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjYuanBn/original/oluTCL.jpg]]


<p><img src="https://img.itch.zone/aW1nLzI3NTA5MDEucG5n/original/iHDbJM.png" loading="lazy"><br>&nbsp;<br>Ahoy, a-hey, o loddi-doddi day, fair traveller and welcome to Glittermitten Grove! Here you will find a land of enchantment, whimsy, and resource management. Sow the fields with magic seeds, pick berries from the plentiful boughs of our sugar fern trees, and collect sparkles from the resplendent rays of our sun-kissed thicket to help us prepare for the long winter ahead. Come join us in our faerieland, full of strange adventure!</p>
<p>Features:</p>
<ul><li>Sow the fields with special seeds </li><li>Pick berries for your winter needs
</li><li>Collect sparkles to light up the night
</li><li>Light fribblesham fireworks for happy delight</li></ul><p>If you need help navigating this mystical fairyland, try the <a href="https://twinbeard.itch.io/glittermitten-grove-guide">Glittermitten Grove Guide</a>!<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTcuanBn/original/frItLq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTguanBn/original/zXi2OJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTkuanBn/original/ogODxP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDAuanBn/original/B5yTDA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDEuanBn/original/U%2BBWYZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDIuanBn/original/79%2FEAI.jpg]]
<p><em>"I was in love with GNOG the second I saw it"-<strong>Rock Paper Shotgun</strong><br>"Weird and wonderful..." -<strong>Polygon</strong><br>"This is such a joyful game, I'm not sure it's possible to leave it without feeling uplifted." -<strong>Destructoid</strong><br>"It's a kooky idea brought about with lots of style and verve..." -<strong>Eurogamer</strong></em><br><br><strong>GNOG</strong> is a playful puzzle game about exploring monstrous virtual toys. Press, pull, slide, grab, click, and rotate every GNOG head to uncover its secrets!</p>
<ul><li>9 musical levels with whimsical puzzles to discover</li><li>A dynamic soundtrack composed by Marskye</li><li>Each level a unique hand-crafted experience</li><li>Play in standard mode or with optional VR support. Seamlessly switch between VR and standard play!</li></ul>
<p><strong>GNOG</strong> is a 3D puzzle game set in a tactile world of toys and secrets. Point, click, grab, poke, spin, pull, and play with uniquely charming monster heads as you explore the hidden worlds inside them. Filled with eye-catching designs, playful interactions, and a rich, reactive soundtrack, the hand-crafted heads come to life in either standard play or in VR.<br><br>Inspired by real-world toy designs, every <strong>GNOG</strong> head is a miniature world to discover. Grab a bookcase and spin it to reveal a hidden pile of coins, slide levers to navigate a damaged ship through outer space, crank a wheel to cook a stew on the stove – each playful interaction generates lively feedback and surprising consequences. Set to a relaxing and dynamic soundtrack that evolves with each level, the surreal worlds and joyful puzzles of <strong>GNOG</strong> will have you turning heads.</p>
<h1>Platforms</h1>
<p>Windows<br>Mac<br>VR (Oculus Rift and Vive support)</p>
<h2>Contact</h2>
<p><a href="https://twitter.com/Koopmode" rel="nofollow noopener">https://twitter.com/Koopmode</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ABDW8L7v7FE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzg0NjU3NC5qcGc=/original/%2Bq03Qo.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3NS5qcGc=/original/aKfMTc.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3Ni5qcGc=/original/COYhm6.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3Ny5qcGc=/original/1MSDXT.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3OC5qcGc=/original/ROEmCr.jpg]]
<h1>In <span style="color: #eb8900">GOOD DOG</span>, you are a good dog.</h1>
<p>Spend a day at your workplace, cheering up patients at the hospital. Wag your tail, smooch and cuddle to lift spirits, but be aware that&nbsp;not everyone responds the same way to every interaction! Find the appropriate one for each patient and cheer them up.</p>
<ul><li><em>Run around</em></li><li><em>Bark at people (goodly)</em></li><li><em>Wag your tail, lick and cuddle&nbsp;</em></li><li><em>Support a worthy cause</em></li><li><em>Be good</em></li></ul>
<h4><strong>GOOD DOG</strong> is a <span style="color: #eb8900">charity microgame</span> made over a few weeks for fun - it's completely free to play, but any and all money you may choose to donate&nbsp;will go directly to charity. Currently, we're donating to:</h4>
<p></p>
<h1><img src="https://img.itch.zone/aW1nLzU5ODA3MTkucG5n/original/3KRWxU.png" loading="lazy"></h1>
<p>DIRECT RELIEF to aid COVID-19 Relief in India, and</p>
<p>REBUILDING ALLIANCE for their Gaza Emergency Relief Fund and to help rebuild homes in Palestine.</p>
<p><strong>CREDITS:</strong></p>
<p>Game by:</p>
<p><a href="https://twitter.com/marafrass" rel="nofollow noopener">@marafrass</a> &amp; <a href="https://twitter.com/rnoelliams" rel="nofollow noopener">@rnoelliams</a></p>
<p><span class=""><strong><a href="https://freesound.org/people/JakLocke/sounds/261107/" rel="nofollow noopener">Door Sound by JakLocke</a></strong></span></p>
<p><span class="">"Fretless" Kevin MacLeod (incompetech.com)</span><span class=""> </span><span class="">Licensed under Creative Commons: By Attribution 4.0 License</span>
</p>
<p><span class=""></span></p>
<p>Stock photos of dogs by <a href="https://unsplash.com/@roaming_angel" rel="nofollow noopener">Angel Luciano</a> and <a href="https://unsplash.com/@rstone_design" rel="nofollow noopener">Ryan Stone</a></p>
<p>Everything else licensed under Creative Commons or made by marafrass!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwNDAzLmdpZg==/original/9I8ndL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwNDA5LmdpZg==/original/0%2Bosp3.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwMzg2LnBuZw==/original/CMVUMH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwMzg1LnBuZw==/original/NEk%2F0X.png]]
<p><span></span></p>
<p><strong>Play as Jessica and Amira,&nbsp;childhood best friends, running their dream food court during the busy month of Ramadan.&nbsp;</strong></p>
<p><strong>Will their friendship withstand the pressure? </strong><br></p>
<p><strong>Or will the stress of running a business together shut down the GLHC food court for good?</strong>
</p>
<p><strong>You decide.</strong>
</p>
<p>Playtime: An 'easily digestible' 60 minutes. 
</p>
<p><br><span></span></p>
<p><em>CMC vignettes are unique snack sized games. They feature characters and locations from Call Me Cera.</em></p>
<p><em>A portion of all&nbsp;Toadhouse Games sales goes to charities that benefit the marginalized groups our characters represent.&nbsp;&nbsp;</em></p>
<p></p>
<p><strong>Call Me Cera:&nbsp;A wholesome game about making friends as an adult.&nbsp;<br></strong> Wishlist here: <a href="https://store.steampowered.com/app/1523870/Call_Me_Cera/" rel="nofollow noopener">https://store.steampowered.com/app/1523870/Call_Me_Cera/</a>&nbsp;</p>
<p>Come chat to us in our Toadhouse Discord:&nbsp;<a href="https://discord.gg/Q5mK58hMSt" rel="nofollow noopener">https://discord.gg/Q5mK58hMSt</a>&nbsp;</p>
<p>Play the CMC vignettes here: <a href="https://teamtoadhouse.itch.io/">https://teamtoadhouse.itch.io/</a>&nbsp;</p>
<p>Follow Toadhouse Games: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener">https://twitter.com/Toadhouse_Games</a> <br>Follow Call Me Cera: <a href="https://twitter.com/CallMeCera" rel="nofollow noopener">https://twitter.com/CallMeCera</a> <br>Follow Team Toadhouse: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener">https://twitter.com/TeamToadhouse</a></p>
<p></p>
<h3>If your computer tries to block the application:&nbsp;</h3>
<p>Windows users: Click the “Open Settings” link or head back to Settings &gt; Apps &gt; Apps &amp; Features and set the option to "Allow apps from anywhere."
</p>
<p>If Microsoft Defender SmartScreen pops up: Click more info, click run anyway.
</p>
<p>Mac Users: Right click on application, click 'open.' Agree to the pop up.
</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/II9oEua22Ck" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzIucG5n/original/50sFku.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzMucG5n/original/bIo%2Fz2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzEucG5n/original/8%2FVwEl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU1MDM5MTMucG5n/original/BVSLLm.png]]
<p class="text-center"><br></p>
<p class="text-center">Even if you always stay a&nbsp;member of racing club,</p>
<p class="text-center">There will be times when you won't be able to participate.<br></p>
<p class="text-center">But don't worry, the club will wait for you.</p>
<p class="text-center">So just grab a pear, watch the races, and hang out with friends.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MTMxMDcuZ2lm/original/VJF%2BK2.gif" loading="lazy"><br></p>
<h2 class="text-center">CONTROLS</h2>
<p class="text-center">
<em><strong>W / D / S / A</strong></em> – move<br>
<strong><em>LMB</em> or </strong><em><strong>E</strong></em> – action<br>
<strong><em>ESC</em> or </strong><em><strong>ENTER</strong></em> – pause / unpause game<br>
<em><strong>LEFT SHIFT</strong></em> – run
</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MTMxMDguZ2lm/original/6%2FRae8.gif" loading="lazy"><br></p>
<h2 class="text-center">FAMICASE</h2>
<p class="text-center"><em><strong>Good Morning Drifter</strong> </em>is an<em>&nbsp;</em><em>AGBIC 2018</em> submission<em>&nbsp;</em>based on the original Famicase cover design by Kyle McKernan /&nbsp;<a href="https://twitter.com/spacetreasured" class="" rel="nofollow noopener"><span class="" dir="ltr">@<span class="">spacetreasured</span></span></a>:</p>
<p class="text-center">
	<img src="http://famicase.com/18/softs/160_sample.jpg" alt="Saturday Race Club" width="400" loading="lazy"></p>
<h2 class="text-center">WORDS</h2>
<p class="text-center">
<strong><em>
"A whimsical little experience that’s all about having fun with friends rather than coming first"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="https://www.alphabetagamer.com/good-morning-drifter-game-jam-build/" rel="nofollow noopener">Alpha Beta Gamer</a>
</p>
<p class="text-center">
<strong><em>
"You’re free to eat a few pears"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="https://indiegamesplus.com/2018/11/good-morning-drifter-explores-the-community-around-racing" rel="nofollow noopener">Indie Games Plus</a>
</p>
<p class="text-center">
<strong><em>
"갈등도 없고 사건도 없는 느긋한 일상같은 게임입니다"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="http://rabapyca.blogspot.com/2018/09/good-morning-drifter.html" rel="nofollow noopener">펼치다</a>
</p>
<p class="text-center">
<strong><em>
"Download on itch.io (Windows, Mac)"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="http://warpdoor.com/2018/09/26/good-morning-drifter/" rel="nofollow noopener">Warp Door</a>
</p>
<p class="text-center">
<strong><em>
"And through this delightful tapestry, we learn to come a little closer to all the loved ones we may have in our own lives"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="https://www.rebind.io/good-morning-to-everyone-especially-you-good-morning-drifters-1966/" rel="nofollow noopener">RE:BIND</a>
</p>
<p class="text-center">
<strong><em>
"A cozy, relaxing game about hanging out with your street racing friends. Grab a few pears!"&nbsp;<em><strong></strong></em></em></strong> 
– 
<a href="https://twitter.com/wf__games" rel="nofollow noopener">Weird Fucking Games</a>
</p>
<p><strong><img src="https://img.itch.zone/aW1nLzE1MzY2NzkuZ2lm/original/gvtiR2.gif" loading="lazy"><br></strong></p>
<h2 class="text-center">CREDITS</h2>
<p class="text-center">
Made by <a href="https://twitter.com/LOWPOLIS" rel="nofollow noopener">@LOWPOLIS</a><br>
Graphics, Writing by <a href="https://twitter.com/rayzones" rel="nofollow noopener">@rayzones</a><br>
Programming, Music, SFX by <a href="https://twitter.com/yafffle" rel="nofollow noopener">@yafffle</a><br>
Famicase cover by <a href="https://twitter.com/spacetreasured" rel="nofollow noopener">@spacetreasured</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1Mzc2MzYuZ2lm/original/gkhmn8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1Mzc2MzcuZ2lm/original/D4OT2R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzYxMjc1ODAucG5n/original/L8bqBV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5NzkucG5n/original/WOkblk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODAucG5n/original/adp7gQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODMucG5n/original/6PyqkU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODIucG5n/original/gjkM2o.png]]
<p>Little Goopty-Goo wants leave his life in the tower, he will need to stomp on goo squares and make sure to not break that squishing combo if he wants to get out any time soon.&nbsp;&nbsp;</p>
<p>Goopty Goo is&nbsp;game inspired by the floor is lava and squishing enemies in mario games. After you stomp the first goo square in each room you can't touch the floor until you have squished all the goo in that level.</p>
<p><strong>Play Time:</strong>&nbsp;10-20 minutes</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>Controls&nbsp;</strong></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;<strong>&nbsp;Space/W:</strong>&nbsp;jump
</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<strong>A/D:</strong>&nbsp;move left and right
</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<strong>&nbsp;&nbsp;S:&nbsp;</strong>Stomp</p>
<figure><a href="https://www.patreon.com/DylanBrownGames" target="_blank" rel="nofollow noopener"></a></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xEN9Ks1llq8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDM4MzMxLzIyMDE2NTQucG5n/original/1Z4Uk1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM4MzMxLzIyMDE2NDMucG5n/original/txcOlr.png]]
<p>Chop, sear, and eat your way through a collection of organic minigames in GourMelee! Play with two to eight players in this local multiplayer party game where you share your controller with a friend to dominate the kitchen. Every minigame is made with cooperation in mind. Each player holds half of the controller working together with their other half to become the best chef in the kitchen! GourMelee is the perfect snack at a party, bust it out with the chips and dip!<br></p>
<p><strong>GourMelee requires at least two controllers to play and is local multiplayer only</strong></p><p></p><p>Game by: Anthony Tesija<br>Music by: Visager, Nik Tesija</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zYyuw5ZdBGg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzNzgucG5n/original/YgTYeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODEucG5n/original/GI85XY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODIucG5n/original/rIRaTQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODMucG5n/original/W5kNID.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzOTAucG5n/original/Vx8NLE.png]]
<h3 class="text-center">Swing, climb, grab, and throw in this action platformer where you can <strong>grapple anywhere</strong>!</h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MTguZ2lm/original/%2FoRJOf.gif" loading="lazy"><br></p>
<p>Grappling's the name of the game! The rules are simple:</p>
<ul><li>Grapple onto any surface and swing!</li><li>Grab enemies and objects and throw!</li></ul>
<p>...but the possibilities are endless! Hijack a hoverbike, shoot some billiards, play some pinball, solve a pipe puzzle,&nbsp;take a ride on a flying flower - every new course brings new challenges!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MjAuZ2lm/original/Co0KUz.gif" loading="lazy"></p>
<p>Featuring a story told across 30 courses, there's hours of platforming fun in the base game alone - but there's even more to do! <strong>Score Attack</strong> for A and S ranks, challenge the post-game&nbsp;<strong>Boss Rush</strong>, collect&nbsp;<strong>Cassette Tapes</strong> hidden throughout the game, and refine your swinging technique in&nbsp;<strong>Time Attack</strong> - the fun, unique movement makes Grapple Force Rena a <a href="https://www.speedrun.com/gfr" target="_blank" rel="nofollow noopener">great speed game</a>!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MjEuZ2lm/original/NYSSDr.gif" loading="lazy"></p>
<h2 class="text-center">Swing anywhere!&nbsp;Throw everything!</h2>
<p class="text-center"><a href="https://discord.gg/2pcU726" target="_blank" rel="nofollow noopener">GalaxyTrail Discord server</a> - <a href="http://www.grappleforce.com" target="_blank" rel="nofollow noopener">Official website</a> - <a href="https://github.com/GalaxyTrail/GFR_bugs/issues" target="_blank" rel="nofollow noopener">GitHub bug tracker</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODQucG5n/original/WGprvT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODUucG5n/original/5nrNZY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODYucG5n/original/G7xnkR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODMucG5n/original/am2fYX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODcucG5n/original/CQP3aX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODgucG5n/original/Asg9lr.png]]
<p>Gratia is a short, narrative role-playing game with an emphasis on gratitude and friendship! Play as a slime, unravel the mysteries of the town of Gratia, and make some friends along the way!</p>
<p>This game was created as a directed study over the span of one fifteen-week semester. The development process from start to finish is documented on <a href="https://github.com/ChaoticTeal/Directed-Study-FA19/wiki" target="_blank" rel="nofollow noopener">GitHub</a>, and the devlog video playlist is on <a href="https://www.youtube.com/playlist?list=PLI2WfmaGGL0rv_MVuAtjTDfONqO6jvUYc" target="_blank" rel="nofollow noopener">YouTube</a>.</p>
<p>Credits:</p>
<p>Game by <a href="http://www.joshuawhittom.com/portfolio/" target="_blank" rel="nofollow noopener">Joshua Whittom</a></p>
<p>Music by Javan Whitney-Warner</p>
<p>Art: <a href="https://sharm.itch.io/tiny16" target="_blank">Tiny 16</a>&nbsp;by <a href="https://itch.io/profile/sharm" target="_blank">Lanea Zimmerman</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/wdZXJq3T76M" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzMucG5n/original/MyKuWZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzEucG5n/original/8BXvNt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzIucG5n/original/fKpWaF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzQucG5n/original/NgJ%2F3H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzAucG5n/original/R5UpVN.png]]
<blockquote class="text-justify">//<strong>DISPATCH: </strong><em>SONG-7-NUIT-ORYX</em>// /Belchior - it happened again. I don't know what to tell you. We've tried everything - confining him to his quarters, a full medical scan - we even sent samples back to R&amp;D, but nobody can explain it. I'm writing to you to let you know that it's happening to me too. And I'm sorry, Belchior. The entity wants us all. Do not send any reinforcements, lest they fall under its sway too. I hope this finds you well.&nbsp;I'm sorry. I can't hold on for much longer, Belchior, so hear me when I say - there's nothing we can do. It's old. It's powerful. And we'll never understand it. It's infested the Walker model. /Lieutenant Oswald - Engineering/ //end transmission//</blockquote>
<p class="text-justify"><strong>GREATER SECRETS&nbsp;</strong>is a&nbsp;<em><a href="https://austin-ramsay.itch.io/beamsaber/devlog/174666/the-beam-saber-supply-drop-licence"><strong>Beam Saber Supply Drop</strong></a></em>.&nbsp; It's designed as a supplement for the mech roleplaying game <a href="https://austin-ramsay.itch.io/beamsaber"><strong><em>Beam&nbsp;Saber</em></strong></a> by Austin&nbsp;Ramsay. Be sure to check out the hyperlink for the full rules in case you need explanations for any of the rules of the base game.&nbsp; <em>This material is an unofficial supplement and is not affiliated with Austin Ramsay.</em></p>
<p class="text-justify">GREATER SECRETS has been co-authored by <strong><em><a href="https://yurir.itch.io/">Yuri Runnel</a></em></strong> and <a href="https://deviantwarlock.itch.io/"><strong><em>August Orion</em></strong></a>. It aims to bring elements of fantasy, horror and the strange to the world of Beam Saber. It currently consists of 10 Pilot Playbooks and rules for creating Legendary Vehicles. In addition to this, a future update with an ETA of early 2021 will include a custom setting, as well as an two Squad Playbooks.&nbsp;</p>
<p class="text-justify">The Supply Drop contains the following Playbooks:</p>
<ul class="text-justify"><li class="text-justify"><strong>THE CHARIOT:</strong>&nbsp; A&nbsp;warrior that has been modified for battle by being permanently attached to a war machine.&nbsp;</li><li class="text-justify"><strong>THE LOVERS:&nbsp;&nbsp;</strong>A person that is bound to a great machine spirit that takes the form of their vehicle.&nbsp;CW: potential body horror</li><li class="text-justify"><strong>THE SUN:</strong>&nbsp;A weapons master and protector that wields their signature weapon with ease in order to protect those close to them.</li><li class="text-justify"><strong>THE HIEROPHANT:</strong>&nbsp;A religious leader empowered by their faith, exploring the place of spirituality in a mass conflict.&nbsp;CW: potential religious abuse</li><li class="text-justify"><strong>THE DEATH:</strong> A person capable of controlling the forces of nature, including a giant beast they’ve tamed to do their bidding.&nbsp;&nbsp;CW: animal death and injury, disease, gore, insects</li><li class="text-justify"><strong>THE MOON:</strong> A&nbsp;person capable of supernatural feats who has refined them into a fine weapon.</li><li class="text-justify"><strong>THE MAGICIAN:</strong> A&nbsp;psychic caught between the digital and material. They can manipulate both with equal skill.</li><li class="text-justify"><strong>THE TOWER:</strong> A&nbsp;person brought back from the dead in order to go on a quest for vengeance against those that killed them.&nbsp;CW: tragic death, revenge, cycles of abuse</li><li class="text-justify"><strong>THE DEVIL:</strong> Someone bound to a terrifying entity within their vehicle to whom they can become indebted to do great feats.&nbsp;CW: abusive relationships</li><li class="text-justify"><strong>THE STAR:</strong> An&nbsp;elemental of water and ice. Steady, hard to kill and adaptable, yet still greatly different from everyone around them.&nbsp;CW: xenophobia, racism, alienation</li></ul>
<p class="text-justify">It also contains two example Legendary Vehicles:</p>
<ul><li><strong>THE KNIGHT OF SWORDS:</strong> An iconic and powerful humanoid battle mech that strikes fear into the hearts of your opponents.</li><li><strong>THE ACE OF PENTACLES:</strong> A builder bot containing an experimental&nbsp;AI gone out of control that built itself into a vehicle.</li></ul>
<p>If any of this sounds interesting to you, be sure to check it out! This has been the culmination of a lot of hard work so any interaction with the product is appreciated!&nbsp;Thank you!<br></p>
<p class="text-center"></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU3MDgxLzQ4MjIzODgucG5n/original/2od9cL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3MDgxLzQ4MjIzODcucG5n/original/FXuove.png]]
<p>Greedy Bubble is a brutally hard arcade game about a bubble that is trapped inside a cave and wants some cash.</p>
<p>Features:</p>
<ul><li>30 hard levels</li><li>Old-school style</li><li>Super cool art and sounds</li></ul>
<p><br></p>
<p><strong>Programming &amp; Game Design&nbsp;- SG</strong></p>
<p><strong>Level Design - Manodeix, SG</strong></p>
<p><strong>Arts - SG, Oskar</strong></p>
<p><strong>Audio -&nbsp;SG&nbsp;(SFX), JHENKINS&nbsp;(OST)</strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODY2Ni81OTMxMTUzLnBuZw==/original/5bgvRO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODY2Ni81OTMxMTYxLnBuZw==/original/3tLF6T.png]]
<p>GrimBlade is a light and fast-paced roleplaying game of adventures and stories set within an implied Grim fantasy world. Contained in these pages are the bones of a roleplaying game. The reasoning for this is that it is&nbsp;<strong>YOUR</strong>&nbsp;game. It is expected that readers and Game Masters will add, remove, create and hack the game that best fits any gaming group.<br><br>GrimBlade is a small zine with only 12 interior pages.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTMucG5n/original/rz2338.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTIucG5n/original/lYVbrE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTQucG5n/original/sMqcfk.png]]
<p><img src="https://img.itch.zone/aW1nLzE5NzczOTQucG5n/original/Hd%2F6m%2F.png" loading="lazy"><br></p>
<p>Maintaining a healthy Work-Life balance is pretty tricky on a good day but it’s damn near impossible when your boss threatens foreclosure on your mortal existence. As the new bartender at DEAD-END, you’ll make new friends, mix weird drinks, all while navigating Life, Death and everything in between.</p>
<p>Learn more about the residents of New Eden City and yourself in this Noir, Urban, Fantasy Visual Novel.<br><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5NzczOTUucG5n/original/xME2LF.png" loading="lazy"></p>
<p><strong>Current Features:</strong><br></p>
<ul><li>Includes Episode 1, 2 &amp; 3</li><li>A wide cast of patrons looking for a shoulder to cry on!</li><li>A Jazzy, Noir, Manga-inspired Aesthetic</li><li>Choices that matter!&nbsp;</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzE5NzczOTYucG5n/original/EcaN78.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><em>“The first and only chapter on offer so far, paints a nice introduction to this world, laying the groundwork for a promising game to come.”</em><br><a href="http://www.hyperlightup.com/grimm-tonic-what-its-like-bar-tending-at-dead-end/" target="_blank" rel="nofollow noopener">Hyper Light Up</a><br><em><br>“... Grimm &amp; Tonic may just be quirky enough to escape a niche market. I can only hope that the effort doesn't sully with time.”</em><br><a href="https://www.keengamer.com/article/20417_grimm-tonic-preview" target="_blank" rel="nofollow noopener">Keen Gamer</a><br></p>
<p class="text-center">-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;- - - -<br></p>
<h3 class="text-center">TRY THE <a href="https://www.newgrounds.com/portal/view/748428" target="_blank" rel="nofollow noopener">DEMO</a>!</h3>
<p></p>
<h3 class="text-center">FOLLOW ON&nbsp;&nbsp;</h3>
<p class="text-center"><strong><a href="http://bit.ly/2UnlnzE" target="_blank" rel="nofollow noopener">Steam Page</a>&nbsp; &nbsp; &nbsp;<a href="https://twitter.com/spriteWrench" target="_blank" rel="nofollow noopener">Twitter</a>&nbsp;&nbsp;&nbsp; &nbsp;<a href="http://spritewrench.com/Grimm-Tonic/" target="_blank" rel="nofollow noopener">Official Site</a></strong><strong></strong></p>
<h3 class="text-center">PRESSKIT</h3>
<p class="text-center"><strong></strong><strong><a href="http://bit.ly/2I5CZcD" target="_blank" rel="nofollow noopener">Visit The Presskit</a></strong></p>
<p class="text-center">-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;- -&nbsp;-&nbsp;-&nbsp;- - - -</p>
<p class="text-center"><em>Want to share your thoughts? Feel free to tweet the game with the hashtag #GrimmTonic!<br></em></p>
<p class="text-center"><em><strong>Want to contribute to the development of the game? </strong><br>Submit your feedback to <strong>ghenry@spritewrench.com</strong> with the <u>subject line:&nbsp;"GnT Feedback"</u><br></em></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xh6_MG1toMA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzUucG5n/original/Ox1owZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzcucG5n/original/2ntRnn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzgucG5n/original/HPOboq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzYucG5n/original/uwaah5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwNDAucG5n/original/340jqn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzkucG5n/original/mF%2Bnqt.png]]
<p>Original Soundtrack for GRINDSTONE.</p>
<p>All music by Sam Webster. Mixed by Sam Webster.<br>Mastered by Andy Magoffin at the House of Miracles:&nbsp;<a href="http://thetwominutemiracles.com/" rel="nofollow noopener">thetwominutemiracles.com</a><br>Additional vocals throughout by Morgan Joy.<br><br>Extra special thanks to Nathan Vella, Dan Vader, Kris Piotrowski, Jim Guthrie and everybody at Capy Games.<br><br>Album Art by Kelly Smith:&nbsp;<a href="https://linktr.ee/beatfist" rel="nofollow noopener">linktr.ee/beatfist</a><br><br>Game available now on Apple Arcade:<br></p>
<p><a href="http://www.grindstonegame.com/" rel="nofollow noopener">www.grindstonegame.com</a></p>
<p><a href="http://www.capybaragames.com/" rel="nofollow noopener">www.capybaragames.com</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/26UtmuqU37Q" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzM1OTI2MjYucG5n/original/eT20Lo.png]]
<p><strong>~Huge Update Out Now</strong>~<br></p>
<p>Playing as Bruce, the world's most talented indoor gardener, you will travel to different eras and worlds in order to water, light, and tend to the most tedious plants with the high-tech magic of a watering can, a reflective mirror, and an electric fan, to name just a few tools at your disposal.<br><br>Using straightforward controls taught in an intuitive way, experience the simple but challenging systems in this top-down 2d plant simulator, in all of it's pixel-art glory [Zero pixels were rotated in the making of this game].<br><br>In the new Ultimate Edition, every aspect of the Grow Big (or Go Home) has been expanded on and improved upon, including visuals, audio, and gameplay. There is now original music themed to each and every location and the brand-new hard mode, which doubles the length of the game, can be attempted for those seeking a challenge.<br><br>Drop your jaw at the paradox between such cheerful tunes and such mind-flipping gameplay as you play through now 30+ imaginative levels; Can you reach the newly-expanded procedural and replayable level set in Hell? Can you unlock the 3 themed outfits that Bruce desires? Can you complete hard mode and master the art of gardening? The answer to each of these questions lies in the “Buy Now” button above.<strong></strong></p>
<p>===</p>
<p>Update v2.0 (Ultimate Edition) released - more details here: <a href="https://www.quarantinc.com/post/grow-big-or-go-home-ultimate-edition-v2-0-out-now" target="_blank" rel="nofollow noopener">Quarant Inc Ultimate Edition Update Blogpost</a></p>
<p>Update v1.01 released - more details here:&nbsp;<a href="https://www.quarantinc.com/post/post-launch-update-v1-01" target="_blank" rel="nofollow noopener">Quarant Inc v1.01 Update Blogpost</a><span></span></p>
<p>===</p>
<p>Facebook: <a href="https://www.facebook.com/QuarantInc.Coop" target="_blank" rel="nofollow noopener">Quarant Inc</a></p>
<p>Twitter: <a href="https://twitter.com/QuarantInc" target="_blank" rel="nofollow noopener">@QuarantInc</a></p>
<p>Instagram: <a href="https://www.instagram.com/quarant_inc/" target="_blank" rel="nofollow noopener">Quarant_Inc</a>&nbsp;</p>
<p>Tiktok: <a href="https://www.tiktok.com/@quarant_inc?" target="_blank" rel="nofollow noopener">Quarant_inc</a></p>
<p>Website: <a href="https://www.quarantinc.com" style="font-size: inherit" target="_blank" rel="nofollow noopener">QuarantInc.com</a></p>
<p>Reddit: <a href="https://www.reddit.com/r/QuarantInc/" target="_blank" rel="nofollow noopener">r/QuarantInc</a></p>
<p>===</p>
<p>Ultimate Edition trailer:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/osAixuhb2gs" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>Release trailer:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/C__dThDTFPY" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>Teaser:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/NPc1U7I10pY" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/osAixuhb2gs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjQucG5n/original/2HrM%2BM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjUucG5n/original/7k3Y0M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjcucG5n/original/x6Cio7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NzAucG5n/original/2YYlhC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NzEucG5n/original/ecbcbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjkucG5n/original/d5GdjQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjYucG5n/original/FhlAXb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjgucG5n/original/2PO7tw.png]]


<p>This game is in&nbsp;<strong>OPEN BETA/EARLY ACCESS.&nbsp;</strong>Talk about the game, play or run games, and provide feedback to the official&nbsp;<a href="https://discord.gg/3jgZSmzH7G" target="_blank" rel="nofollow noopener">Gubat Banwa Discord</a>. Learn about what being in early access means below.</p>
<blockquote class="text-center"><strong><span class=""><em><br>The archipelago of never ending war...</em></span>
<br><span class=""><em>Sorrowsong, sorrowsong, that song without end.&nbsp;</em></span>
<br><span class=""><em>Rejoice in the glory of combat, may we never know peace:<br>GUBAT BANWA!</em></span></strong></blockquote>
<p>&nbsp;<strong>GUBAT BANWA</strong>&nbsp;is a tactical martial arts and war drama roleplaying game set in a heroic fantasy setting inspired by <strong>Classical Philippines.</strong></p>
<p>You play as&nbsp;<strong>Kadungganan</strong>, the elite warrior-braves that hail from the manggugubat warrior caste, who enjoy prestige and regard oftentimes higher than their noble counterparts. As a Kadungganan, your hands are bloody, your soul flecked by violence, and you must find a reason why you fight.<br><br>It is&nbsp;<strong>tactical martial arts</strong>&nbsp;because it is inspired by&nbsp;<em>Final Fantasy Tactics, Tactics Ogre: Let Us Cling Together, Fire Emblem, RWBY, Dungeons and Dragons 4e, Exalted, Sengoku Basara, and wuxia novels</em>, which place great emphasis on team roles, synergy, positioning, the joy of movement, and emergent strategy.<br><br>It is&nbsp;<strong>war drama</strong>&nbsp;because it is is not about delving into dungeons, getting loot and money and getting stronger. It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a datu that blasphemed your sultan.&nbsp;As a war-drama roleplaying game, expect an emphasis on relationships with other warriors, with your loved one, and intense interpolity politics with the other polities. Gubat Banwa expects you to play into these melodramas: sons having to kill their fathers for defecting to an enemy polity, daughters having to flee to the mountains to escape misogynistic responsibilities, loved ones killing each other slowly due to orders and/or emotions, best friends dueling at the top of a mountain in the midst of a storm as their ideologies bring them to a head. This features systems of game that focus on action and consequence, with a d8 dice pool system meant to invoke the casting of lots with crocodile's teeth that Precolonial Filipinos would do.</p>
<p>This game is made for war stories, the likes one would see in Final Fantasy Tactics and Tactics Ogre.&nbsp;&nbsp;It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a Datu that blasphemed your Sultan. War Drama narrative mechanics make sure that violence happens inevitably, in one way or another, all threads intertwining and coming to a head with tactical combat.&nbsp;</p>
<p>Violence is the only answer, Kitatak says, and so it has been since the beginning of time.<br><br><strong>For the islands were born in conflict and so shall it perish. Rejoice in the glory of combat.</strong><br></p>
<p>In this game, the goal is to have...</p>
<ul><li>...war drama and interpersonal relationship mechanics.</li><li>...stylish tactical combat, that has fictional inspirations from RWBY and Devil May Cry, but mechanical inspirations from Final Fantasy Tactics, Tactics Ogre, and Fire Emblem (remember those Critical pixel animations?).</li><li>...a split between missions (Ventures) and downtime&nbsp;(Respite) drive the flow of combat of Gubat Banwa.</li><li>...a setting inspired wholly by an Uncolonized Late Porcelain Period&nbsp;Philippines and even some of Early Spanish Philippines, made to facilitate war narratives across the warring states of Kitatak.</li><li>...all you need to run war story Ventures in said setting!</li></ul>
<h2>Early Access</h2>
<p>Being in open beta or early access, the game is still in development and will be getting new updates and more. If you pay for the game now, you'll receive all the updates in the future, eventually until the game is released! By supporting the project, the funds go into art and more game design, allowing for more character options and even more content for the game!</p>
<p>Note: Please also keep in mind that not all art has been installed yet! Look forward to updates! Thank you.</p>
<p>There are community copies that will be constantly refreshed for those that don't want to pay for Early Access. However, rest assured that every cent that is dropped here goes into paying for more art to bring Kitatak to life.</p>
<h2>Heaven Moves Without You Series</h2>
<p>If you wish to dive deeper into the lore and setting of Gubat Banwa, consider checking out&nbsp;<strong><a href="https://tadhana.itch.io/stars-without-brightness">Stars Without Brightness</a>,&nbsp;</strong>a a Fantasy novel set in Kitatak, following a skilled spirit medium, a hotheaded warrior, a rebellious prince, a princess turned flesh-eater, a revived swordsman, and a passionate monster in their quest to fulfill orders and duty, facing the truth of war and violence.</p>
<h1 class="text-center">The river flows.</h1>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDUucG5n/original/t2UOb9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMTgucG5n/original/9%2F88K8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU3NTgzMzQucG5n/original/3%2FNDZB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDYucG5n/original/LAiPlD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjIucG5n/original/0RQ4L0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjEucG5n/original/%2F%2FvoCG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjAucG5n/original/7yj7Vs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDEucG5n/original/LXrTst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDIucG5n/original/wv1pe9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMTkucG5n/original/ujY08a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDQucG5n/original/R%2F3uNE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDMuanBn/original/X1OoIu.jpg]]
<p>Do you enjoy traveling to strange new worlds?&nbsp;Do you want to be immortal and&nbsp;shoot preposterous amounts of bullets?&nbsp;Are you prepared to give up everything you love&nbsp;to join a super-soldier program? Well, then have I got an idea for you: sign up for the Gunbuds Initiative!</p>
<p><strong>Gunbuds</strong> is a 2d side-scrolling&nbsp;shooter with levels that change every time you play. Playable with up&nbsp;to five local players using any combination of&nbsp;four controllers and a keyboard, it features a story mode as well as an "explory" mode that features larger levels and additional mechanics geared towards experienced players.</p>
<p>The story portion takes roughly 45 minutes to complete, and each "explory"&nbsp;session will run between 20 and 30 minutes.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/EToiCZOW-do" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDYucG5n/original/itQzhJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDkucG5n/original/DoBSeV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDcucG5n/original/F%2Fhxl%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDgucG5n/original/e%2FqM1k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDUucG5n/original/pstJCM.png]]
<h1>Puzzle meets Tower Defense!</h1>
<p>Load your guns! Rain death from above! Protect your valuable orphans! Defeat giant, improbable bosses! Gunhouse is part puzzle, part active tower defense, as you make big combos to launch a hail of bullets and special attacks at the alien invaders who would like nothing better than to consume your delicious orphan friends.</p>
<p>With infinite levels (you can play this <strong>for ever</strong>), upgradeable weapons, hardcore mode, a unique visual style from artist <a href="http://buttermonster.com" target="_blank" rel="nofollow noopener">Juan Ramirez</a>, a "weird fiction" story by Brandon Sheffield (Street Fighter 30th), code by Jim Stormdancer (<a href="http://twinbeard.com/frog-fractions" target="_blank" rel="nofollow noopener">Frog Fractions</a>), and music by <a href="http://disasterpeace.com" target="_blank" rel="nofollow noopener">Disasterpeace</a> (Hyper Light Drifter), Gunhouse from Necrosoft Games will entertain the heck right out of you, maybe!<br></p>
<ul><li>Tower Defense!</li><li>Weapon upgrades!</li><li>Infinite levels!</li><li>Strange narrative!</li><li>Weird bosses!</li></ul>
<p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=3625464362/size=large/bgcol=333333/linkcol=ffffff/tracklist=false/artwork=small/transparent=true/">&lt;a href=&quot;&lt;a href=&quot;https://music.disasterpeace.com/album/gunhouse-ost&quot;&gt;Gunhouse&quot; class=&quot;redactor-linkify-object&quot;&gt;https://music.disasterpeace.com/album/gunhouse-ost&quot;&gt;Gunhouse&lt;/a&gt; OST by Disasterpea&lt;span id=&quot;selection-marker-1&quot; class=&quot;redactor-selection-marker&quot;&gt;&lt;/span&gt;ce&lt;/a&gt;</iframe></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/BTs3tEa5MpE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMS5wbmc=/original/Lazdsf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OS5wbmc=/original/8nwzaO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNC5wbmc=/original/R%2Fwksr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNS5wbmc=/original/0LgtIx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMi5wbmc=/original/xAtBbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OC5wbmc=/original/R%2BrHcH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMy5wbmc=/original/%2BD20N5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMC5wbmc=/original/9CbAje.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2LzI4OTU5MjIucG5n/original/%2BY9Tr%2F.png]]
<p><em>Guppy is a 2D watercolour fish simulation.</em></p>
<p>Swim like a fish! Move your tail left and right to propel yourself through the water, hide in the shade of lilies and venture carefully into the open in search of food. Try not to get eaten.</p>
<p><br></p>
<p><img src="http://ninjadodo.net/guppy/img/gupanim400.gif" loading="lazy"></p>
<figure><a href="http://nowplaythis.net/2016-friday/" rel="nofollow noopener"><img src="http://ninjadodo.net/guppy/img/guppy_nowplaythis_official.png" alt="Now Play This 2016" title="Now Play This 2016" loading="lazy"></a> <a href="http://nowplaythis.net/2016-friday/" rel="nofollow noopener"></a> <a href="http://awkwardarcade.co.uk/games" rel="nofollow noopener"><img src="http://ninjadodo.net/guppy/img/guppy_awkward_showcase.png" alt="Awkward Arcade" title="Awkward Arcade" loading="lazy"></a>
</figure>
<p><br></p>
<p><strong>CONTROLS</strong>:</p>
<p>Alternate <strong>LEFT</strong> and <strong>RIGHT ARROW</strong> (player 1) or <strong>A</strong> and <strong>D</strong> (player 2)</p>
<p><strong>NOTE: </strong>Also supports <strong>GAMEPAD</strong> and <strong>TOUCH</strong>&nbsp; (mobile)</p>
<p>Co-op only supported on desktop (Win/Mac/Linux), not mobile.</p>
<p><em><strong>TIP: </strong>If you prefer swimming around in peace you can also <strong>remove predators</strong> in the options (ESC &gt; Main Menu &gt; Options), though this disables scoring.</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/eDpMZiYe840" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzM5NDgucG5n/original/n8ZACW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzM5NDYucG5n/original/KMMzMf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzE4NDQxNi5wbmc=/original/JsYDM7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzE4NDQxNy5wbmc=/original/3qMhXb.png]]
<p>Your home planet is under siege from a band of intergalactic pirates led by the fiendish Gyro Boss!</p>
<p>Unfortunately your technology is no match for this deadly beast and his crazy weapons. Every game is doomed from the start, but you'll fight with honour to complete your mission objectives and achieve the best possible score.</p>
<p>Dodge an endless assault of weapons as you orbit around the boss on a fixed circle, it's not as easy as it looks. Can you secure bragging rights as the best space pilot to bite the dust against the alien menace?</p>
<hr>
<h4>Crazy Weapons</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2ODcuZ2lm/original/lF1bE3.gif" loading="lazy"><br></p>
<p>Dodge Gyro Boss' crazy attacks including shoals of squid, extendable boxing gloves, cluster bombs, homing silverfish and many more. You can even find out which weapons cause you the most trouble by looking up your deaths in the statistics menu.</p>
<hr>
<h4>Multiplayer Madness</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2OTAuZ2lm/original/LMKLN6.gif" loading="lazy"><br></p>
<p>New to Gyro Boss DX - enter party mode with 2-4 players and battle the boss together. Party mode cycles through a variety of weird mini games including faulty brakes mode and civil war. Who will come out on top?</p>
<hr>
<h4>Fifty Objectives</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2OTMuZ2lm/original/bMAQPm.gif" loading="lazy"><br></p>
<p>When your friends aren't around, you can always enjoy classic mode. We've added 50 objectives to the game so you can feel good about yourself even when you're failing miserably in your fight against the Gyro Boss.</p>
<hr>
<p>Dare to take on the Gyro Boss today. Your planet needs you.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0zqxGtT2VQA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTEucG5n/original/DDOUks.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTMucG5n/original/ci8pix.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTIucG5n/original/Av1i%2B3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTQucG5n/original/SF5FN0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTYucG5n/original/C9zGrd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTcucG5n/original/RnDw%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTgucG5n/original/gNuc7I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTUucG5n/original/65BrBV.png]]
<p>Hack FPS is a First Person Shooter&nbsp;(obviously). Your objective is to hack enemies and use their abilities to get to the end of the level.<br></p>
<h2><img src="https://img.itch.zone/aW1nLzQ0NDMxNjIuZ2lm/original/vI5Fzc.gif" loading="lazy"></h2>
<h2 class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTM3MjEucG5n/original/eDWyUL.png" loading="lazy"></h2>
<p>WASD: Move</p>
<p>Mouse: Look</p>
<p>Space bar: Jump</p>
<p>Left mouse button: Fire</p>
<p>Right mouse button: Hack</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU0Mjg1NzIucG5n/original/9sJzyT.png" loading="lazy"></p>
<ul><li><strong>Classic - Play through 20 levels with infinite retries.</strong> You can choose which level to start from, and your health and ability do not carry over from the last level.</li><li><strong>Hardcore - Play through an entire chapter with no retries.</strong>&nbsp; You can only start from the first level of the selected chapter, and your health and ability carry over from the last level.
</li><li><strong>Map Creator - Create and play custom levels.</strong> Unfortunately, these cannot be saved. Saving custom levels may become an option in the future, however.
</li><li><strong>Chapter 3 Preview - This is a temporary game mode showcasing Chapter 3</strong>, and will remain until Chapter 3 is released.
</li></ul>
<p><br></p>
<h2 class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTM3MjIucG5n/original/aCoB9D.png" loading="lazy"></h2>
<ul><li>Pay attention to the minimap to know where you're landing.</li><li>You can melee enemies by tackling them.</li><li>Hold two movement keys at once to gain more speed.</li></ul>
<p><br></p>
<p>The game is free to download for Windows, Mac, and Linux, but there is also an extras pack with development images and videos to support the developer. Please keep in mind this game is still being worked on, so feedback would be greatly appreciated.</p>
<p>The music for this game was not made by me. You can find the music pack <a href="https://assetstore.unity.com/packages/audio/music/the-ambient-music-pack-lite-137165#description" target="_blank" rel="nofollow noopener">here</a>.</p>
<p>Join the r3sgame&nbsp;<a href="https://discord.gg/rfaQDbA" target="_blank" rel="nofollow noopener">Discord</a>&nbsp;for updates on this game.</p>
<p>Skybase trailer:&nbsp;</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/wxNycIiKXeY" frameborder="0" allowfullscreen=""></iframe></div>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/wxNycIiKXeY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzQ4MDY3ODcucG5n/original/a6%2Fstj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzQ4MDY3ODgucG5n/original/dzOgFh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzQ4MDY3ODkucG5n/original/ktGx7c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzQ4MDY3ODUucG5n/original/k%2Fqyt5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzQ4MDY3ODYucG5n/original/itu4ws.png]]
<p>Hacknet is an immersive, terminal-based hacking simulator for PC. Dive down a rabbit hoIe as you follow the instructions of a recently deceased hacker, whose death may not have been the accident the media reports. Using old school command prompts and real hacking processes, you’ll solve the mystery with minimal hand-holding and a rich world full of secrets to explore.</p>
<p><br>Bit, a hacker responsible for creating the most invasive security system on the planet, is dead. When he fails to reconnect to his system for 14 days, his failsafe kicks in, sending instructions in automated emails to a lone user. As that user, it’s up to you to unravel the mystery and ensure that Hacknet-OS doesn't fall into the wrong hands.<br><br>Exploring the volatile nature of personal privacy, the prevalence of corporate greed, and the hidden powers of hackers on the internet, Hacknet delivers a true hacking simulation, while offering a support system that allows total beginners get a grasp of the real-world applications and commands found throughout the game.<br></p>
<h2>Features</h2>
<p><strong>Real Hacking</strong><br>Based on actual UNIX commands, Hacknet focuses on real hacking, not the Hollywood-style version of it. This creates a truly immersive experience and puts players right in the thick of trying to break through the firewalls.<br><br><strong>Unlock the mystery of Bit</strong><br>A hacker is dead and the media reports don’t add up. When you are contacted by his “ghost” - an automated failsafe system - you’re drawn into the dark and murky world of underground hackers.<br><br><strong>Full immersion</strong><br>You are thrust into a persistent virtual world with no “levels” or obvious game elements to break the illusion. Follow the guidance of the emails from Bit or just dive down the rabbit hole, chasing down clues and snippets of information you find as you explore different systems.<br><br><strong>Accessible but uncompromising</strong><br>Whilst not holding your hand or dumbing down, the design of the game and the learning curve enables those with no prior terminal experience to enjoy it whilst delighting those in the know.<br><br><strong>Killer tunes</strong><br>Hack to the beat of a soundtrack featuring underground artists including Carpenter Brut (Hotline Miami) and Remi Gallego (AKA The Algorithm).<br>Soundtrack produced in association with The Otherworld Agency.<br><br><strong>Hack your own adventures</strong><br>Create your own campaigns, system networks, nodes, themes, music and story missions using the Hacknet Extensions mod tools. Share them with other players.</p>
<p><br></p>
<p><strong>Hacknet Educational License:</strong><br>Educational bulk licenses of Hacknet can be purchased.&nbsp;Go to the educational license&nbsp;game page here -&nbsp;<a href="https://fellowtraveller.itch.io/hacknet-edicational-license">https://fellowtraveller.itch.io/hacknet-edicational-license</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/CcoH1X-nqLk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDUucG5n/original/P6YyRl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDYucG5n/original/DIApXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDcucG5n/original/rNvLOi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDgucG5n/original/xcN4fW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDkucG5n/original/FedsZS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MTAucG5n/original/n%2FQhU6.png]]
<p><img src="https://img.itch.zone/aW1nLzU2NDA0NDYuanBn/original/Nj%2FyPj.jpg" loading="lazy"><br></p>
<p>Something mysterious is happening in the pumpkin patch this Halloween! You control Pumpkin Man, a humanoid pumpkin thing animated by occult forces on a quest to discover why things are so creepy. And you vomit candy corn.</p>
<p>Adventure through three weird, spooky worlds in search of your destiny. Meet chainsaw maniacs, undead sorcerers, spooky bats, and lots of skeletons on your way. Can you survive the horrors that await you within these spooky tombs?</p>
<p class="text-center">Also available on:</p>
<p class="text-center"><strong><a href="https://store.steampowered.com/app/425650/Halloween_Forever/" target="_blank" rel="nofollow noopener">Steam</a> | <a href="https://store.playstation.com/en-us/grid/search-game/1?query=halloween%20forever&amp;smcid=psapp" target="_blank" rel="nofollow noopener">PlayStation 4</a> | <a href="https://store.playstation.com/en-us/grid/search-game/1?query=halloween%20forever&amp;smcid=psapp" target="_blank" rel="nofollow noopener">PlayStation Vita</a></strong> | <a href="https://www.nintendo.com/games/detail/halloween-forever-switch/" target="_blank" rel="nofollow noopener">Nintendo Switch</a><br></p>
<p class="text-center"><em>Purchasing this game on Itch.io will also grant a Steam Key.<br></em><em><em><em><em><img src="https://img.itch.zone/aW1nLzU2NDA0NDUucG5n/original/Npa2Mt.png" loading="lazy"><br></em></em></em></em></p>
<p><em><em><em><em></em></em></em></em></p>
<div class=""><iframe src="https://www.youtube.com/embed/vzY_3kVMYbQ" allowfullscreen="" width="100%" height="281" frameborder="0"></iframe></div>
<p><em><em><em><br></em></em></em><br></p><p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vzY_3kVMYbQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ1MS5wbmc=/original/c8LbBy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ1Ni5wbmc=/original/xaTDpo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTIuanBn/original/WGyFkt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTMuanBn/original/pCU8Y%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTQuanBn/original/HyMhEy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTMyLmpwZw==/original/t9fSN2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM0LmpwZw==/original/rx6PuK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM1LmpwZw==/original/X19v8H.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM2LmpwZw==/original/bNO41s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ2Ny5wbmc=/original/McYXE7.png]]
<p>The sound of cicadas, a crackling fire, the twinkling of fireflies, the smell of sunscreen, and the sweetness of bug juice... it's a unique concoction that can only mean one thing: SUMMER CAMP!&nbsp;</p>
<p><em>Happy Campers</em> is a TTRPG where you play as a Counselor at a summer camp with a supernatural flair.&nbsp;&nbsp;Team up with your co-Counselors and go on summer-camp adventures! But every summer camp has its legends and secrets, and sometimes the supernatural is closer than you might think...</p>
<p><br></p>
<p><u>This Download Includes:</u></p>
<ul><li>16-page full-color rule-book PDF complete with sample one-shot campaign</li><li>A fillable character sheet PDF</li><li>Links to a custom-curated playlist and sound resources</li><li>4 sample characters already rolled</li></ul>
<p><br></p>
<p>Much of this was drawn from my own experiences of working at a summer camp, which is a sort of Twilight Zone all in itself.&nbsp; The system features roll modifiers similar to that found in Dungeons and Dragons, and runs on a d6 system.&nbsp;</p>
<p>I&nbsp;hope you Counselors have as much fun playing it as I&nbsp;did making it!&nbsp;:)&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0NzkuanBn/original/6JbAkx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0ODAuanBn/original/NLNLj6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0OTAuanBn/original/vUfI5H.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0OTUuanBn/original/BhsHrb.jpg]]
<p><strong>Haque</strong> (/hak/) is a glitch fantasy roguelike adventure about cute monsters,&nbsp;low-bit hauntings, and a suspiciously talkative narrator. Choose your&nbsp;character and battle through forests, deserts and dungeons to defeat a&nbsp;mysterious evil. Die often. Try again!<br></p>
<p>Explore a vibrant fantasy world falling apart at the seams.</p>
<p>An old man has asked you to complete a quest: purge the land of evil monsters! What land is this? It doesn't matter. Don't ask too many questions.</p>
<p>Journey into the pixelated wilderness with your beloved pet at your side. Encounter dangerous foes, make some new&nbsp; allies, and challenge the reigning bosses. Ignore the mounting sense of&nbsp;dread. That's normal.</p>
<p><br></p>
<p><em>“... a legitimately good little roguelike, with a solidly designed UI, animation used sparingly but to great effect and with enemies, items and classes that are almost all weird but cute.”</em><br><a href="https://www.rockpapershotgun.com/2017/12/02/haque-is-a-cute-glitchy-roguey-likey-little-thing/" target="_blank" rel="nofollow noopener">Rock Paper Shotgun</a><br><br><em>“It's not even a question. I can be a necromancer, some dude with a stick, or a werewolf wizard. A werewolf wizard with brass knuckles who throws boulders and shoots icicles, no less.”</em><br><a href="http://www.pcgamer.com/becoming-the-ultimate-werewolf-wizard-in-retro-roguelike-haque/?utm_content=buffer37c47&amp;utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=buffer-pcgamertw" target="_blank" rel="nofollow noopener">PC Gamer</a><br><br><em>“Haque’s bite-size gameplay and taut combat loop are superbly crafted. For anyone looking for a new and inventive take on dungeon crawling, Haque is a solid choice: highly recommended.”</em><br><a href="https://steamcommunity.com/linkfilter/?url=http://saveorquit.com/2018/03/08/review-haque/" target="_blank" rel="nofollow noopener">Save or Quit<br><br></a><em>"There are so many minute details that it is difficult to wrap my mind around the content of this game from what I have seen so far. I am astounded by the quality of the game overall."<br></em><a href="https://steamcommunity.com/id/YQMaoski/recommended/662540" target="_blank" rel="nofollow noopener">IndieGems</a><span></span></p>
<p><br></p>
<p><strong>Haque </strong>features:<br></p>
<ul><li>Character selection featuring an endless array of randomized characters
</li><li>Detailed character statistics and a classic armor slot system
</li><li>Procedurally generated maps and settings
</li><li>Challenging turn-based combat with an emphasis on movement and strategy
</li><li>Dozens of unique enemies-- don't get surrounded!
</li><li>Rotating roster of bosses, each with different fighting styles and priorities
</li><li>Hundreds of items to equip, eat, or... reanimate
</li><li>Weapon and armor crafting
</li><li>New character quirks at the end of every level
</li><li>In memoriam screens to immortalize your permanently dead characters
</li><li>A slider for screen grime!</li></ul>
<p>Use every tool at your disposal to deliver <strong>Haque </strong>from evil. Find the truth. Save the game.<br></p>
<p><strong>Haque </strong>is available on PC, Mac (32-bit only), and Linux.</p>
<p><img src="https://img.itch.zone/aW1nLzg4ODE2Ni5qcGc=/original/KuUfEw.jpg" loading="lazy"><br></p>
<p><strong>Haque</strong> was successfully funded on Kickstarter in October of 2015 and developed by a small team at SuperTry Studios:<br></p>
<p>Music by <a href="https://supertrystudios.bandcamp.com/" target="_blank" rel="nofollow noopener">Joe Kenneally</a><br></p>
<p>Additional graphics by <a href="https://twitter.com/towniealamode" rel="nofollow noopener">Brian Townsend</a></p>
<p>Promotional illustrations by <a href="https://twitter.com/BryanWShepherd" target="_blank" rel="nofollow noopener">Bryan Shepherd</a></p>
<p>Writing by <a href="https://twitter.com/hadstclair" target="_blank" rel="nofollow noopener">Hadley St. Clair</a></p>
<p>A game by <a href="https://twitter.com/RealKevinCole" rel="nofollow noopener">Kevin Cole</a></p>
<p>You can follow <strong>Haque's</strong> development in our weekly updates on <a href="https://www.kickstarter.com/projects/1507109559/haque/updates" rel="nofollow noopener">Kickstarter</a>, <a href="https://twitter.com/haquerl" rel="nofollow noopener">Twitter</a>, and <a href="https://www.facebook.com/ProjectMaiden/" rel="nofollow noopener">Facebook</a>. To contact SuperTry, you can reach out on Twitter or send us an email at <a href="mailto:supertrystudios@gmail.com" rel="nofollow noopener">supertrystudios@gmail.com</a><br></p>
<p>[HEY MAC FOLKS: Haque is 32-bit and won't run on Mac OS Catalina and above. Sorry!]</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2UwsQPl5LAk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5Mi5naWY=/original/ndix7j.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTgxLnBuZw==/original/kqmDGj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5OS5naWY=/original/MC4grV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTgzLnBuZw==/original/zGM9Vt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5My5naWY=/original/kl3gDL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg0LnBuZw==/original/sNI3Ns.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5NS5naWY=/original/VCWXfN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg1LnBuZw==/original/DhgvEO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5Ni5naWY=/original/bPrnqq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg2LnBuZw==/original/LxplCa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5NC5naWY=/original/f%2F%2FBbE.gif]]
<p><em></em><em>This is a supplement for</em><em>&nbsp;<a href="https://gilarpgs.itch.io/slayers">Slayers</a>&nbsp;by GilaRPGs. You will need a copy of that game to use these hunts the way they were intended. I am not affiliated with GilaRPGs.</em></p>
<p>Harrowing Hunts is a collection of 5 hunts for use with Slayers.&nbsp;</p>
<p><strong>The Show Must Go On&nbsp;</strong>is the shortest hunt in the set, and also one of the most straightforward. A mysterious theater appeared in town, and the patrons aren't returning after they see the show.&nbsp;Find out why.</p>
<p><strong>Trouble on the High&nbsp;Seas&nbsp;</strong>is a swashbuckling tale of piracy and ship-based combat. It's got all the tropes you'd expect for a mission about monster hunters setting out to sea. Harpoons, missing ships, and pirate boarders that lay gangplanks and come out, scimitars swinging!</p>
<p><strong>The Clockwork Dilemma&nbsp;</strong>is the longest game in the set at 7 pages. It's a steampunk twist on the City: someone stole the gem out of the Clocktower, causing all sense of time to fall apart. Can the Slayers find out who stole it and restore the gem that powers the city? And by the time they do, will they even want to?<br></p>
<p><strong>An Apple a Day</strong>&nbsp;Is another short adventure that&nbsp;pits the Slayers against the classic enemy, the Doctor.&nbsp;Can they capture one? And can an enterprising scientist perform her experiments before the other Doctors track her down and extract their revenge?</p>
<p><strong>Haunted Honeymoon</strong> is a classic tale of what happens after a wedding. Assuming that what happens after a wedding is something straight out of Halloween! Your standard ghosts and goblins come out of the woodwork here!</p>
<p><strong>Meet the Hunters&nbsp;</strong>forces the Slayers to experience the other side of the equation: what happens when they're the ones being hunted? And what will they do about it?</p>

[img width=500 [https://img.itch.zone/aW1nLzU4MjQ1NDUucG5n/original/ZD0Frc.png]]
<div class="text-center"></div>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/Z8QzGgoJk-U" frameborder="0" allowfullscreen=""></iframe></div>
<div class="text-center"><br><br></div>
<iframe src="https://store.steampowered.com/widget/1292500/" frameborder="0" width="646" height="190"></iframe>
<h1 class="text-center"></h1>
<h1 class="text-center">The World Is Big...</h1>
<p>In Harvest Island Beginnings, you will take on the role of Will, a curious boy who wants to explore the big island. What lies beyond it? Take the first journey as you help your younger sister, Samantha, learn how to give your harvest offering to the gods.</p>
<p><br></p>
<p><strong>Overall Features</strong><br></p>
<ul><li>Introduction to Harvest Island with 1-2 hour of gameplay.<br>
</li><li>Meet Will, Samantha, and Greyson as you work the farm.<br>
</li><li>Collect items found around the island.<br>
</li><li>Explore an undiscovered mystery.</li></ul>
<p><strong><br></strong></p>
<h1 class="text-center"><a href="https://discord.gg/UMdQzmadrB" target="_blank" rel="nofollow noopener">Join Us !</a></h1>
<p class="text-center"><a href="https://discord.gg/UMdQzmadrB" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ2NDcwMjkucG5n/original/ZbuVtT.png" loading="lazy"></a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Z8QzGgoJk-U" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzU5MDk2MjQuanBlZw==/original/icyiC6.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzU5MDk2MjMuanBlZw==/original/4Yh6ob.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzU5MDk2NDAucG5n/original/NosTzB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzU5MDk2NDEucG5n/original/s9czs4.png]]

<p>The official soundtrack for Head AS Code! The full soundtrack is now out!</p>
<p>Check out the game here:&nbsp;<a href="https://miracle-moon.itch.io/head-as-code">https://miracle-moon.itch.io/head-as-code</a></p>
<p>Tracklist:<br></p>
<p>01 - Head AS Code.wav<br>02 - Anomalous Sepulcher.wav<br>03 - Agoraphobic Sloth.wav<br>04 - Ambient Strain.wav<br>05 - Abyssal Snarl.wav<br>06 - Accelerated Scuffle.wav<br>07 - Active Search.wav<br>08 - Auxiliary Search.wav<br>09 - Advancing Shadows.wav<br>10 - Algorithm Simile.wav<br>11 - Alarming Silence.wav<br>12 - Alarming Situation.wav<br>13 - Anaphora Solution.wav<br>14 - Ascertaining Speech.wav<br>15 - Ascertaining Sanity.wav<br>16 - Android Sorrow.wav<br>17 - Agnostic Shutdown.wav<br>18 - Use Your Head (Bonus Track).wav<br>19 - Crack The Code (Bonus Track).wav</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/YjgnvbMXlew" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzUyOTc1MjcucG5n/original/wp7vm5.png]]
<p>This was the first PC game I released myself and, well, yeah it looks dated and&nbsp;it's a bit rough around the edges but I think it's still really&nbsp;fun. It's 8 years old&nbsp;and the physics are admittedly a bit dodgy&nbsp;but if you like&nbsp;zero budget racing games and you don't expect AAA quality, you might enjoy&nbsp;unlocking everything :)</p>
<p>Anyway, here's the spiel that went with the original:</p>
<p>Jump a super car at 100mph, crash a monster truck in a forest, drive a dumper truck through the power station or drive a classic hot rod to street racing victory; it's all here!</p>
<p>Get ready for crazy driving, high speed crashing and crazy exploding fun with vehicles of all different types. Each vehicle has a unique driving style for you to master, in both quick race or career modes.</p>
<p>Use nitrous to fuel the ride and ram other racers out of existence in this exciting, all-out <strong>arcade </strong>racing game!</p>
<h5>GAME FEATURES</h5>
<ul><li>7 different environments (race forward and reversed)</li><li>Race and win to unlock vehicles, including cars, rigs, monster trucks and hot rods</li><li>30+ career mode events</li><li>Quick race mode allows you to race any unlocked car on any unlocked track</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNC5wbmc=/original/qdd%2BtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzMy5wbmc=/original/kaAbIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNS5wbmc=/original/pZMKRo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNi5wbmc=/original/TnUMOT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzOC5wbmc=/original/0HRoss.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNy5wbmc=/original/JP4fXK.png]]
<p>Heart Home is a light roleplaying game about diaries, memories, and building a cozy headspace. It’s meant to be played by one or more players in short (under an hour) sessions, returning every day or so. Players don’t have to play at the same time to play together.</p>
<p>Inspired in part by Animal Crossing, Heart Home lets players indulge in some small-scale worldbuilding as they define and decorate their headspace. Fueled by kind acts and personal reflection, Heart Home is made to be a relaxing, potentially meditative daily ritual.</p>
<p>
</p>
<p><em>Players: 1+<br>Materials: A writing document shared between players<br>Pages: 6</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NzA2LzM3ODcyMzkucG5n/original/fe%2FHyc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NzA2LzM3ODcyNDAucG5n/original/vYqr0y.png]]
<p><em>Welcome to the wildest night of your life.</em></p>
<p><br></p>
<p><strong>HEART//BEAT </strong>is a one-sheet, easy to play&nbsp;game inspired by synthwave music videos, crazy road trips, and sharing music with friends.&nbsp;</p>
<p><br></p>
<p>On the start of a night out, something dramatic or weird happens, and your group has to shelf their plans for hitting the club by going on an adventure through the city, solving problems with HEART and BEATing those that stand in the way.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzQxMDM2NzIucG5n/original/KfQuk3.png]]

<p>You have been held in Hell for hundreds of years.&nbsp; Now, finally, you have been given a chance to escape; by winning the golf tournament held every 666 years!&nbsp; Which really is an awful choice, but it's the best you've got.&nbsp; Can you defeat the other competitors to escape from Golf Hell, or will you be trapped here for all eternity?</p>
<p>Hell Holes is a competitive fantasy golf dice game for 1-6 players.&nbsp; Each time it is your turn, you will select your club and roll dice to see how your shot went.&nbsp;&nbsp;Hopefully, you stayed on the course and did not stray into any of the fantastic dangers of the Circle you are competing on at the time.&nbsp; As you play your way through the nine Circles of Old Hell&nbsp;Downs, the demonic Caddy will interfere by offering special clubs to whoever is in last place at the end of a circle.&nbsp; Only by playing better than&nbsp;your fellow golfers (or maybe being luckier than them)&nbsp;can you escape&nbsp;Golf Hell!</p>
<p>You will need a pair of ten-sided dice (or an electronic dice roller, or a numbered spinner, or some other way to generate random numbers between 1 and 10) to play Hell&nbsp;Holes.</p>
<p>Purchases at $6.00 or above add a community copy to the pool for other community members who may be interested in the game, but unable or unwilling to purchase it, to claim and enjoy Hell Holes themselves.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwODQucG5n/original/0wSrmc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwOTIucG5n/original/F%2BiNiW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwOTMucG5n/original/LM6xk1.png]]
<p>Hellhole is an isometric physics puzzle game for Windows.</p><p>Consume everything.</p><p>Defy Gaia.</p><p>We will be our own undoing.<br></p>
<p>The game was designed and developed as part of a study into ludonarrative dissonance within computer games.</p>
<p>If you choose to play this game I would be very grateful if you could complete the questionnaire linked below:           </p>
<p><a href="https://forms.gle/LnaVNfy6zENDKn4v5" rel="nofollow noopener">https://forms.gle/LnaVNfy6zENDKn4v5</a>      
</p>
<p>You can also play Hellhole in your browser here:<br></p>
<p><span class=""></span><a href="https://jkelly.itch.io/hellhole-game-webgl" target="_blank">Hellhole Browser Version</a><a href="https://jkelly.itch.io/hellhole-game"></a></p>
<p>©jkelly 2021
    </p>
<p>HellholeGame_V104 published 1st April 2021
</p>
<p><strong>Minimum system requirements</strong></p>
<table><tbody><tr><td>Operating System<br></td><td>Windows 10 Version 18362.0 or higher</td></tr><tr><td>CPU</td><td>Intel Core i3-4170 or better</td></tr><tr><td>GPU</td><td>Nvidia GeForce GT 640 or better</td></tr><tr><td>HDD</td><td>200 MB free space</td></tr><tr><td>RAM</td><td>4 GB</td></tr><tr><td>VRAM</td><td>2 GB</td></tr></tbody></table>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OnPYAgo7l-0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTUyNzAucG5n/original/ZHFLP4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTMucG5n/original/qCFnEw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTQucG5n/original/yITgwu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTUucG5n/original/gLZeL9.png]]
<p>The Heroes Enhancing Lives Program (HELP) is now hiring for new talent!&nbsp;Are you a team player who works hard,&nbsp;&nbsp;can handle challenging situations, and questions the status quo?&nbsp;This fulfilling position is located at the peaceful hamlet where you can enjoy homely, local cuisine or take a breather at the nearby forest path.&nbsp;</p>
<p>As one of our HELPers, you will be assigning certified heroes to quests vetted by your manager. This position is a great opportunity to get your foot in the door for the lucrative, history-rich Hero industry. You will have opportunities to meet famous heroes and work closely with them as you recognize their needs and talents as they pertain to quests.</p>
<p>No experience? No problem! If you have finished all certified HELP examinations prior to applying, our expert management team will give you high class, AWARD WINNING training to get you settled in.&nbsp;</p>
<p>So what are you waiting for? Apply today!</p>
<p>Qualifications:</p>
<p>- Two years of prior work experience in a customer facing or account role required.</p>
<p>- Basic computer knowledge and familiarity with spreadsheet and documentation software required.</p>
<p>- May be expected to carry up to twenty pounds of packaging and materials as they arrive for basic office functions.</p>
<p>- Must be trainable, and willing to learn!</p>
<p>- Work-From-Home is not available for this role.</p>
<p>- Bring your best smile!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/az9NDTpc8tc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwNzAucG5n/original/OIoJAM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwOTUucG5n/original/2v%2BzHK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwOTEucG5n/original/wdtDJ0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwNzQucG5n/original/wgZLBh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwODMucG5n/original/kJt6BJ.png]]
<p><strong>STORY:</strong></p>
<p>You woke up to the digital rendition of Korobeiniki.</p>
<p>(Of course you would recognize the song. You even used to dream of different shaped bricks falling into place every night. Sometimes you would wake up in cold sweat as the jagged tower grew taller and taller without a single-column bar in sight to make it all go away.)</p>
<p>Wiggling in place, you tried to roll off the bed as usual, but nothing happened.</p>
<p>There is no bed.</p>
<p>There is no “you”.&nbsp;</p>
<p>The vast greyness up ahead seems like the only possible way of escape.</p>
<p>Your body twitches as the high-pitch Russian folk music fills your two-dimensional senses, driving you mad.</p>
<p>What will you do?</p>
<p><strong>REQUIREMENTS:</strong></p>
<p>1 - many players<br>1d6 for each player<br>Pencil or Pen</p>
<p><strong>HOW TO PLAY:</strong></p>
<p>1. Roll the dice on your turn.<br>2. Each roll decides your tetra block shape, based on diagram.<br>3. Only stacking similar to "a certain falling block game" is allowed. (Name hidden due to copyright reasons)<br>4. You die/lose a turn should a horizontal line is drawn across the playing field. Moving upwards is crucial.<br>5. Score points based on number of cube that touches the “ceiling”.<br>6. Game ends when no more legal moves are possible.<br>7. Player with most points at the end of the game wins.</p><p><strong>CREDITS:</strong><br></p><ul><li>Background image on game page<br>&lt;a href="&lt;a href=" https:="" www.freepik.com="" free-photos-vectors="" background"=""&gt;https://www.freepik.com/free-photos-vectors/background"&gt;Background&lt;/a&gt; vector created by dukepope.com - <a href="http://www.freepik.com" rel="nofollow noopener">www.freepik.com</a></li><li>Feedback from Riz, Umar, Ben Flowers, and Calvin Wong.</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMTAyLzIwMDc5NjEucG5n/original/CS8%2BAN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMTAyLzIwMDc5NjIucG5n/original/3OzeMn.png]]
<p>Hearts race in this 4-player beat-a-thon!</p><p>Can you pump past the finish line? CAN YOU?</p><p>~</p><p>Tap out the beat of a heart to get goin'!</p><p>Have fun!</p><h2>Made by:</h2><p><a href="https://twitter.com/Rokashi" target="_blank" rel="nofollow noopener">Rokashi Edwards</a> - Art/Animation</p><p><a href="https://twitter.com/davidsgallant" target="_blank" rel="nofollow noopener">David S. Gallant</a> - Programming</p><p><a href="https://twitter.com/KingKRule" target="_blank" rel="nofollow noopener">Ricky Lima</a> - Music</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjkvMzEzNDMuZ2lm/original/WKo2Wd.gif]]
<p>Magical girls are real, but the pay sucks! Join the Union of Magical Girls as they fight to protect the city from evildoers by day, and fight to become unionised by night.</p>
<p><strong>Features:</strong></p>
<ul><li>Take on the brainwashed zombie hordes in&nbsp;<strong>tactical, turn-based combat</strong>.</li><li>Your magical familiars gave you these powers, but now they expect you to fight evil for free?&nbsp;<strong>Negotiate better pay</strong>&nbsp;or employment benefits based on your performance.</li><li>Get to know the inhabitants of the struggling convenience store where you and your family live and work. Power up your abilities by&nbsp;<strong>making new social connections</strong>.</li><li>Loaded with dorky humour and 90s magical girl anime tropes.</li></ul>
<p><strong><img src="https://img.itch.zone/aW1nLzM4MTI4NTMuZ2lm/original/fU6lLi.gif" loading="lazy"></strong></p>
<p><strong>Battle&nbsp;Flow:</strong></p>
<p>Due to your overwhelming power levels, the enemies can't actually hurt you, so the focus is on&nbsp;<strong>defeating enemies as quickly as possible</strong>&nbsp;to gain higher rewards and bargaining power when the battle ends.<br><br>Of course, not all enemies are brainless zombies, and you'll have to contend with many abilities designed to impede your pursuit of a perfect score!</p>
<p><strong>Social&nbsp;Links:</strong><br></p>
<p>Outside of battle you'll be able to invest your precious time and money into building up your social links through&nbsp;<strong>visual novel style conversations</strong>:</p>
<ul><li>Help the convenience store clerk find romance!</li><li>Try to lure out the NEET who lives in the storage cupboard!</li><li>Waste all your money on gacha machines to try and impress a small child!</li></ul>
<p><img src="https://img.itch.zone/aW1nLzM4MTI4NjAuZ2lm/original/qba7I4.gif" loading="lazy"><br></p>
<p><strong>Negotiation:</strong></p>
<p>How the heck are you supposed to have a social life with no money or free time? After every battle you'll get to lead the Union of Magical Girls in&nbsp;<strong>collective bargaining</strong>&nbsp;to determine your reward based on how well you fought and how many gems you gathered.<br><br>Don't let them take your&nbsp;<strong>dental plan</strong>!</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0kFF03Ascuk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjcucG5n/original/53GLTE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjEucG5n/original/SxMbcl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjIucG5n/original/XmLN8u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjAucG5n/original/tFYS%2FO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjgucG5n/original/wBfaII.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjUucG5n/original/x%2FrnDw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjYucG5n/original/mZvtK%2F.png]]
<p>Welcome to the hell house!&nbsp;<em>Hardcore Gaming 101 Presents: Castlevania</em>&nbsp;includes 158 pages with full reviews of over thirty Castlevania titles - starting from the 1986 Nintendo original up to the 2014&nbsp;<em>Lords of Shadow 2</em>&nbsp;- plus reviews of clone games, soundtracks, books, trivia, and more! Reviews are based on texts from the&nbsp;<a href="http://www.castlevaniadungeon.net/" rel="nofollow noopener">Castlevania Dungeon</a>, though nearly everything has been entirely written from scratch, plus lots more additional material!</p>

[img width=500 [https://img.itch.zone/aW1nLzMwOTk4MjAuanBn/original/%2F%2Bbe45.jpg]]
<p>There is always that one goal of every gamer...that goal is to become the ULTIMATE gamer! It's time to pick up the controller, glue yourself to the couch and get ready!<br><br>Start your journey, jam to awesome music and achieve the highest score!</p>
<h2>Key Features</h2>
<ul><li>Rock out to amazing music!<br>
</li><li>Enjoy a unique display of colors with each tap!<br>
</li><li>Two modes to choose from (Endless and Hi-Score Challenge)!</li><li>Tons of unlockables!</li></ul>
<p>Art by&nbsp;<a href="https://instagram.com/art.of.nuby" target="_blank" rel="nofollow noopener">art.of.nuby</a> &amp;&nbsp;<a href="https://instagram.com/therealcrowjones" target="_blank" rel="nofollow noopener">therealcrowjones</a></p>
<p>Music by&nbsp;<a href="https://songwhip.com/n3ktunes" target="_blank" rel="nofollow noopener">N3ku</a></p>
<p><strong><em>PHOTOSENSITIVE WARNING: READ BEFORE PLAYING!!!</em></strong><br></p>
<p>A very small percentage of individuals may experience epileptic seizures when exposed to certain light patterns or flashing lights. Exposure to certain patterns or backgrounds on a computer screen, or while playing video games, may induce an epileptic seizure in these individuals. Certain conditions may induce previously undetected epileptic symptoms even in persons who have no history of prior seizures or epilepsy.</p>
<p>If you, or anyone in your family, have an epileptic condition, consult your physician prior to playing. If you experience any of the following symptoms while playing a video or computer game -- dizziness, altered vision, eye or muscle twitches, loss of awareness, disorientation, any involuntary movement, or convulsions -- IMMEDIATELY discontinue use and consult your physician before resuming play.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pVjMkd_qqBA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDIuanBlZw==/original/%2Bycrb%2F.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYxNjkyMzYucG5n/original/S7mSz4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYwNTI1NDguanBlZw==/original/oZehvc.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDMuanBlZw==/original/f1boCj.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDQuanBlZw==/original/Yg2ca%2B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDUuanBlZw==/original/BOfYQe.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDYuanBlZw==/original/6eaBZI.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDcuanBlZw==/original/TALbA5.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYwNTI1NjEuanBlZw==/original/87HgB9.jpeg]]
<p>It’s Friday afternoon. The edibles are just kicking in, there’s nothing on TV, and the fridge is empty – Time for an adventure. There are three things you need to know:<br></p>
<ul><li>It’s Summer, 1995.   </li><li>Nobody can know you’re high.
  </li><li>McDonald’s is on the other side of town.</li></ul><p>High Society is an improv-heavy micro-RPG for 4 players and 1 GM, following the adventures of 4 Buds across small-town America.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzUzMzQ1NTMucG5n/original/2ha4AJ.png]]
<p><strong>Highwinds</strong> is a sci-fi fantasy space opera RPG, focusing on wild, action movie style fights. Take the role of resourceful heroes on the edge of space and fight pirates, save people from killer robots, and explore ancient vaults locked in astral space.</p>
<p><strong>Highwinds</strong> contains all you need to play, and is designed for 1-6 players and one game master. For playing in person, three six-sided dice are recommended for each player. 15 sample characters are included, ready to play as both PCs or antagonists.</p>
<p><br></p>
<p>Archetype and Species art by Wren Culler</p>
<ul><li><a href="https://mothgeist.wixsite.com/lculler" rel="nofollow noopener">https://mothgeist.wixsite.com/lculler</a></li><li><a href="https://twitter.com/mothgeist" rel="nofollow noopener">https://twitter.com/mothgeist</a></li></ul>
<p>Cover by Goaty Goats using art provided by <a href="https://unsplash.com/" rel="nofollow noopener">https://unsplash.com/</a></p>
<ul><li><a href="https://goaty.neocities.org/" rel="nofollow noopener">https://goaty.neocities.org/</a></li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc3NDIucG5n/original/9IFJAr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjE0NzAucG5n/original/RclQCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc2OTMucG5n/original/U0X%2B7i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc2OTQucG5n/original/3%2BcFh7.png]]
<p><em>hollow</em>&nbsp;is a 2D Roguelike where your imaginary friend helps you traverse your dreams and conquer your fears and guilt.&nbsp;</p>
<p>You are Kid. During the day, things seem dull. You talk to your parents and wander around your home and it all seems so mundane. During the night, everything is in technicolor. You explore a sprawling, procedurally generated dreamscape full of color, adventure, and excitement. Your imaginary friend, Ghost, is both your guide and your primary weapon in your dreams. Through your dreams, you and Ghost must battle your inner fears or risk being consumed by them.</p>
<p>This alpha was created by Team Hollow to fulfill the capstone requirement for the MA Game Design Program at American University, Washington D.C. Look out for future updates from us as we continue to develop <em>hollow</em> into a full retail game!</p>
<p>Team hollow:</p>
<p><a href="https://laraalleydraws.myportfolio.com/" target="_blank" rel="nofollow noopener">Lara Alley</a></p>
<p><a href="https://www.hazelmichelle.com/" target="_blank" rel="nofollow noopener">Hazel Arroyo</a></p>
<p><a href="https://www.mitchellloewen.com/" target="_blank" rel="nofollow noopener">Mitchell Loewen</a></p>
<p><a href="https://filiam.itch.io" target="_blank">Felipe Simas Magalhaes</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ljkUhWfRs2I" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTMucG5n/original/mgvbnd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTAucG5n/original/drl%2BpZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTgucG5n/original/xiUrNn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTQucG5n/original/tGwE2n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTcucG5n/original/DZ3Wsd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTEucG5n/original/kytmYc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTIucG5n/original/Ma89zL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTYucG5n/original/52rN6O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTUucG5n/original/YiJ8YD.png]]
!![[All games]]

!!![[Windows]]

!!![[Android]]

!!![[Linux]]

!!![[macOS]]

!!![[HTML5]]

!!![[Filter by rating]]
<p><strong>Until further notice, all proceeds from <em>Home Again</em> will be funneled toward bail funds and other mutual aid projects.</strong></p><p><span style="color: inherit; font-size: inherit"><em>A tabletop roleplaying game for three to seven people</em><br></span></p>
<p><span style="color: inherit; font-size: inherit">40 years ago, the Tao people and their island community were transported by some unknown means to the outskirts of a modern city. Play as members of the Tao community that have grown up with this legacy and fight every day to build on it, in the face of a society that doesn't understand them or care to.</span></p>
<p><em>Home Again</em> is powered by the apocalypse. Having an understanding of PbtA games should not be necessary but may be helpful.</p>
<p>Features&nbsp;include:</p>
<ul><li>Gorgeous full color cover design by&nbsp;<a href="https://twitter.com/momatoes" target="_blank" rel="nofollow noopener">Momatoes</a></li><li>Deft editing by&nbsp;<a href="https://twitter.com/bignoseagenda" target="_blank" rel="nofollow noopener">Mercedez "Cibby"&nbsp;Acosta</a></li><li>Roughly 40 pages of text, including<ul><li>Rules for playing and running the game</li><li>Guidelines for setting and character creation</li><li>Descriptions of six playbooks</li><li>A sample scenario called "Applewood"</li></ul></li><li>Playbook sheets, move sheets and other reference materials</li></ul>
<p><strong style="color: inherit; font-size: inherit"><br></strong></p>
<p><strong style="color: inherit; font-size: inherit">Note:</strong><span style="color: inherit; font-size: inherit">&nbsp;This game was formerly called&nbsp;</span><em style="color: inherit; font-size: inherit">The Others</em><span style="color: inherit; font-size: inherit">.</span><br></p>
<p><em>Art by <a href="https://twitter.com/momatoes" target="_blank" rel="nofollow noopener">Momatoes</a>.</em></p>

[img width=500 [https://img.itch.zone/aW1nLzIxNTY3MDIuanBn/original/N0vuL4.jpg]]
<p>Sophie is a young girl staying home during COVID-19. Isolated from her friends, she must use her colorful imagination to entertain herself.</p>
<p>Play make-believe minigames to brighten up your mood and stave off the boredom!</p>
<p>~~</p>
<p><em>Homebound</em>&nbsp;is a short game which&nbsp;began as an entry for the 34th GM48 game jam in collaboration with Giraffe. After the jam, I decided to rebuild the game, fleshing it out and polishing it up. I hope that this short game can bring you some joy! Thank you for playing, and stay safe.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hCOtcjmHQrA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTcucG5n/original/qQQOLy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQzMDAucG5n/original/UxSwg5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTYucG5n/original/dKWdJx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTgucG5n/original/AzH%2BGk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQzMDEucG5n/original/KOiu9y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTkucG5n/original/qWZFTI.png]]
<p>A low-poly epistolary game where you navigate a messenger pigeon through a city. During your journey, you hear the contents of the letter you're delivering. This game is SAD and QUEER. Read an article about it at Gayming Mag <a href="https://gaymingmag.com/2020/09/gayme-of-the-week-homing/" rel="nofollow noopener">here.</a></p>
<p>The game doesn't have a tutorial (I'm sorry) so to play, use <strong>A</strong> and<strong> D</strong> on the keyboard or the<strong> left stick</strong> to <strong>move</strong>, and the <strong>mous</strong><strong>e</strong> or the <strong>right stick</strong> to <strong>look around</strong>. <strong>P</strong> or the <strong>top button</strong> on the controller will pause, where you can adjust settings like volume and subtitles.&nbsp;The buildings in blue are significant points that will provide different bits of narrative if you fly over them. There are two endings.&nbsp;</p>
<p>Made by <a href="https://michellelega.com" rel="nofollow noopener">Michelle Lega</a>&nbsp;<br>Voice: <a href="http://charlieirving.com/" rel="nofollow noopener">Charlie Irving</a><br>Music:&nbsp;<a href="https://klassicgames.net/" rel="nofollow noopener">Jes Klass</a></p>
<p>This game is compatible both with <strong>keyboard and mouse</strong> and <strong>controller</strong>. Please download the correct file for your setup, noted with (Keyboard) or (Controller).&nbsp;</p>
<p>NOTE: If you have a Mac running Catalina, you have to launch the game from the itch app, otherwise Catalina won't run it properly!</p>
<p>*If you would like to view a playthrough of the game without downloading, you can watch&nbsp;<a href="https://youtu.be/ihAmB55kP0I" rel="nofollow noopener">here.</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU4NzUucG5n/original/CPm2O1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTAucG5n/original/5DcY3E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTEucG5n/original/gxMaPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTMucG5n/original/eOQ%2BwP.png]]
<p><strong>A mystery told five paragraphs at a time. Over 402,073,902 possible playthroughs.</strong></p><p>Reviews:</p><p>"C'est toute la force de cette narration morcelée, dispensée au compte-gouttes, et ce qui fait certainement de Hope's Peak une des meilleures interprétations du thème de la Mystic Western game jam." - <a target="_blank" href="http://oujevipo.fr/general/5413-hopes-peak/" rel="nofollow noopener">Oujevipo.fr</a><br></p><p>"Very well written. I enjoyed each paragraph and learning more as it went." - <a target="_blank" href="https://oldknivestale.itch.io/">OldKnivesTale</a><br></p><p>"The individual paragraphs and the feeling of the entire game are so strong, I love the writing style, the mystery, the mood. This is one of my fave games from the jam so far." - <a target="_blank" href="https://turnfollow.itch.io/">turnfollow</a><br></p><p><strong>Created for the 2016 Mystic Western Game Jam.</strong><span></span></p><p><strong>By Kalle MacDonald (@KalleMacD)</strong><br><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MzUvMzM5OTk2LnBuZw==/original/AScPNg.png]]
<p>
	<strong>Blast your hovercycle through the enemy's crushing forces under a bright blue sky!</strong>
</p>
<p>
	Drawing inspiration from saturated, hectic, and skill-based arcade games new and old, including games like 
	<strong><em>Burning Force</em></strong>, <strong><em>Border Down</em></strong>, and <strong><em>DARIUSBURST</em></strong>, <strong><em>Horizon Vanguard</em></strong> is a VR action game that aims to combine the speed, focus, and density of <strong>arcade shooting games</strong> with the immersion and input capabilities of <strong>modern VR technology</strong>. Use your hovercycle to dodge enemy fire and attack armored ground targets while taking aim with your pistol to destabilize and destroy aerial foes! Use your radar to get your bearings when overwhelmed!<br>
</p>
<h2>
	Features<br>
</h2>
<ul>
	<li>Support for <strong>PC VR headsets</strong>&nbsp;and <strong>flat-screen</strong>&nbsp;traditional monitor play</li><li>Unique mechanics mixing <strong>bullet hell dodging</strong>&nbsp;and <strong>light gun accuracy</strong></li>
	<li>An <strong>arcade game structure</strong>: short, dense, and challenging</li>
	<li><strong>15 branching stages</strong> full of unique environments, enemies, and bosses, with access dependent the player's ability to find <strong>hidden intel</strong><strong></strong></li>
	<li><strong>Comfortable movement</strong> in VR while maintaining <strong>a blistering sense of speed</strong></li>
	<li>A catchy, melodic <strong>soundtrack</strong> by <a class="" href="http://coda.s3m.us/" target="_blank" rel="nofollow noopener"><strong>Ken Snyder</strong> (aka <strong>coda</strong>)</a></li>
</ul>
<p><br></p>
<p><strong>Check out the demo and leave your feedback below!</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ZRLI3MGp2k0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjAucG5n/original/G3A%2BXt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjUuanBn/original/Dsecf2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NzQucG5n/original/bcRWzj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjcuanBn/original/9LgHzu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjMuanBn/original/bX3upK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjQuanBn/original/NpO51j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjYuanBn/original/EwBAG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0ODMucG5n/original/hbAvmg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjEucG5n/original/2HkFRL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0ODQucG5n/original/oJG%2BIO.png]]

<p><strong></strong>A game about the struggle to have a conversation while also stuffing your face with food.</p>
<p>You are at an all-you-can-eat hot pot restaurant. You're hungry, and you just want to do nothing but&nbsp;chow down.&nbsp;<br></p>
<p>But you're here with a friend, and you don't want it to seem like you're only&nbsp;here to eat!&nbsp;</p>
<p>Can you manage to keep up a conversation while cooking and filling your belly?<br><br><img src="https://img.itch.zone/aW1nLzEyOTcyNzYuZ2lm/original/aDrtU%2B.gif" loading="lazy"></p>
<p><strong>Features</strong></p>
<ul><li>Cook delicious meat, veggies, and tofu in a tasty broth until they're just right!</li><li>Multitask your way through three meals! You'll be&nbsp;cooking and eating while&nbsp;keeping up&nbsp;a conversation with your friend. Make sure she never figures out you're <strong>really </strong>just here for the food...</li><li>You get to direct the convo, but make sure you're ready to keep up with your friend's comments - she'll ask you what you thought about what she said later, and if you don't get it right, things could get ~*awkward*~</li></ul>
<p><strong>Controls</strong></p>
<ul><li>WS or Arrow keys to look up and down</li><li>Mouse or trackpad (<strong>mouse recommended</strong>!) to cook / eat</li></ul>
<p><strong>Credits</strong><br></p>
<ul><li>Developed by Keane Ng&nbsp;(<a href="http://twitter.com/keanerie" target="_blank" rel="nofollow noopener">@keanerie</a>)</li><li>Featuring music and sound by&nbsp;<a href="http://pawsmenu.net/" target="_blank" rel="nofollow noopener">Michael Berto (Paws Menu)</a>&nbsp;</li><li>Playtested by people I've eaten hot pot with who I have not alienated with my plainly food-obsessed behavior</li></ul>
<p><strong>A note for Mac users: &nbsp;</strong>If you’re running the game on Catalina it may take a few extra steps to get it running.&nbsp;See the comments section below for troubleshooting if you run into issues. Be sure to try using&nbsp;the Itch app to run the game (thanks <a href="https://itch.io/post/1747531" target="_blank">Jennythewatt</a> for pointing this out!).</p>
<p><strong></strong><strong>As Seen On!</strong></p>
<p><a href="https://www.rockpapershotgun.com/2018/10/21/work-up-an-appetite-with-hot-pot-panic/" target="_blank" rel="nofollow noopener">Rock Paper Shotgun</a>: "...playing it has made me very hungry, so I’m off to go raid my fridge first."</p>
<p><a href="https://www.pcgamer.com/itchios-free-games-section-is-a-festival-of-scares-right-now/" target="_blank" rel="nofollow noopener">PC Gamer</a>:&nbsp; "...&nbsp;the arse-tightening tension of&nbsp;Hot Hot Panic, a game about trying to hold a conversation while stuffing your face with meat and potatoes."</p>
<p><a href="https://waypoint.vice.com/en_us/article/3k9nb8/hot-pot-panic-is-a-charming-fake-friendship-simulator?utm_source=wptwitterus" target="_blank" rel="nofollow noopener">Waypoint</a>: "This game scratches two very important itches for me: time management mechanics, and the aesthetics of delicious animated food. Also, it’s a great excuse out of any friend dates you may have coming up...just saying."</p>
<p><a href="https://www.theverge.com/2018/11/25/18103322/hot-pot-panic-holiday-meal-conversation-itch-io-thanksgiving-christmas" target="_blank" rel="nofollow noopener">The Verge</a>:&nbsp; "...it manages to take the fairly universal social situation of trying to talk and eat at the same time, and turn it into a clever and fun game."</p>
<p><a href="http://warpdoor.com/2018/10/31/hot-pot-panic/" target="_blank" rel="nofollow noopener">Warp Door</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6S0y93e6Ufk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyNzMuZ2lm/original/XV9B3i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyODkucG5n/original/T%2BAliA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyODMuZ2lm/original/mMc2Tr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTU3MDcuZ2lm/original/yRGmAp.gif]]
<p>How to Embrace a Swamp Creature gives you an austerity crushed commuter town, friendships debating their continued existence, toxic air, visions of the stench, zombies trekking out of the bog for a pub breakfast, pride and madness; asking “What do you do next?”&nbsp;</p>
<p>In the game you play a friend group of mentally ill twenty somethings living in Swamp Strange, a commuter town wrecked by over a decade of austerity. Connected by train to Leafdon, sustaining the city, being sustained by it, being drained by it, an overflowing drain that struggles to remember it’s a town.   </p>
<p>A strange magic pervades Swamp Strange. Breath in the Stench of the weird wetlands and feel knowledge crawling in the dark corners of your mind. You and the other swamp creatures shambles through your routines but you can’t help but feel the cracks in the mud.</p>
<p>Your friend group used to see each other all the time: because you had to. Context forced you together and you became friends through that. But the context is gone. You’ve moved on. But you’re still friends; for now. Two of you had been dating but you’ve been broken up for a while now; one of you is finally managing to move out. Confront aimlessness, confront intimacy, look at what you’ve meant to each other and what you mean to each other</p>
<p>_________________________________<br></p>
<p>Mentally ill swamp things nurturing crumbling friendship in a commuter town.</p>
<p>After the Mountain Goats song of the same name, from Heretic Pride.</p>
<p>For Record Collection 2K21.</p>
<p>Explore the changing days of a friend group in Swamp Strange.</p>
<p>Content Warnings: Oppression, bigotry, mental illness, trauma, drug use.
</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzYzOTcucG5n/original/WItgL0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDAucG5n/original/Tel90a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDEucG5n/original/ATYeTw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDMucG5n/original/BW45fF.png]]
<h3><strong><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/YGyRlCPl7a0" frameborder="0" allowfullscreen=""></iframe></div><br></strong></h3>
<h3><strong>
</strong><strong>How to Win</strong>&nbsp;is an anarchic adventure/gaming experiment where anyone who plays can decide the rules of the world, and which direction our story goes.
</h3>
<p>In the summer of 2020, multi-award winning interactive theatre company Hidden Track teamed with indie game dev Cael O'Sullivan for their first ever gaming experiment. We asked our players what the rules of our game should be, and if they could imagine a world in which everyone could win.
We were given hundreds of suggestions and ideas, and we put the best ones to a public vote.
Whatever they decided,&nbsp;<em>WHATEVER</em>&nbsp;it was, that was the world we made next.&nbsp;</p><p><strong>Winning suggestions included:</strong>
</p>
<ul><li>Make the Most Money in the World
</li><li>Invest all our money in a potato-based pyramid scheme.
</li><li>Slay the Billionaire Dragon
</li><li>Brand new character: The Great Elephant of the North
</li><li>Brand new character: A monster drawn by a 5-year-old
</li><li>RAISE THE KRAKEN
</li><li>stealth ninja style
</li><li>Take over the media and spread propaganda.
</li><li>Run away and join the circus.
</li></ul>
<p>The result was… chaos.
</p>
<p>Now, all 5 chapters of Season 1 have been compiled for itch, along with new functionality and brand new content.</p>
<p>Explore the world we made, find out how it ended, then tell us what to do different.
Whatever you decide, that’s what happens next.
Commissioned by Harrogate Theatres and HOME, Manchester.
</p><p><br></p><h2>Want to try it out first?
<br>
<a href="https://hiddentrack.itch.io/how-to-win-chapter-one">Play Chapter One now, completely for free.</a></h2><p><br></p>
<h4>Reviews:</h4>
<p>&nbsp;“A cleverly subversive pantomime that plays with the conventions of gaming and theatre.”
<a href="http://exeuntmagazine.com/reviews/review-win-shut-hidden-track-online/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Exeunt Magazine</a><br></p>
<p>"An amazing journey of people making insane suggestions and developers allowing those suggestions to shape their game in major ways.&nbsp;This is truly one of the weirdest games I’ve ever encountered. In a good way.&nbsp;"&nbsp;<a href="https://killapenguin.com/gamereviews/how-to-win-season-one-review/" rel="nofollow noopener">KillaPenguin</a></p>
<p>"A&nbsp;revolutionary, one-of-a-kind digital experience... <em>How to Win: Season One&nbsp;</em>is extremely special." <a href="https://www.heypoorplayer.com/2021/04/08/how-to-win-season-one-review-pc/" rel="nofollow noopener">HeyPoorPlayer</a></p>
<p>“An ambitious and original experience... very well-written, and unrestricted by stereotypical notions about gamers.”&nbsp;<a href="https://indie-hive.com/how-to-win/" target="_blank" rel="nofollow noopener">Indie Hive</a>&nbsp;</p>
<p>&nbsp;“How to Win is a game that deals with… uhh, **** how do I explain this. ****.”
<a href="https://indiegamerteam.com/2020/09/17/how-to-win/" target="_blank" rel="nofollow noopener">Indie Gamer Team</a>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/YGyRlCPl7a0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjAyLmpwZw==/original/3eB%2F9N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjAzLmpwZw==/original/lmoe%2FU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjA1LmpwZw==/original/V0Xe5u.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjA3LmpwZw==/original/4KhT%2B%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjEwLmpwZw==/original/G%2FAnqj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjIxLmpwZw==/original/VXxxEr.jpg]]
<<list-links "[tag[HTML5]sort[title]]">>
<p>An entry into the&nbsp;Mini Jam 79: Frogs jam. Made over a weekend, all assets, code and design completed during the 3-day jam apart from listed below:</p>
<p>Some sfx downloaded under CC0 (no attribution required),</p>
<p>Font:&nbsp;Green Viera Font By Nuuncreatype Studio (free for personal use)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg2LmpwZw==/original/GrBSdw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg3LmpwZw==/original/HAwlrm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg4LmpwZw==/original/XXIbJC.jpg]]
<p><strong><br></strong></p>
<p><strong></strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/8WSevbjYolU" frameborder="0" allowfullscreen=""></iframe>
<p><strong><br></strong></p>
<p><strong>Worlds based on animal occupation, with no humans, have been a common theme in&nbsp;media for as long as it has existed. Books, movies, games, cartoons - all of them imagined worlds based on animals.</strong></p>
<p><strong><br><br>But are they really all that they promise? When Mark is transported to one of those worlds, he has to make due. Find a home, an occupation, clothes that don't have holes in the backside - everything.&nbsp;And in the process he might just find love.</strong></p>
<p></p>
<p>Avaliable in <strong>English and Portuguese</strong>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/8WSevbjYolU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcwODk1LzEzMDkzNjIucG5n/original/F9s6qS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwODk1LzEzMDkzNjMucG5n/original/WxmXx6.png]]
<p><em>You've had a long day. All you want to do is climb into bed. But why is your pillow quivering like that?</em></p>
<p><em>I Found a New Friend</em>&nbsp;is a short&nbsp;text adventure in the style of the old Infocom games. It is based loosely on the&nbsp;They&nbsp;Might Be Giants song of the same name.</p><p>Can you find all sixteen endings?</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTM1OTMvNDYwMTgucG5n/original/GwCiaX.png]]
<h1 style="text-align: center"></h1>
<p>Exactly what it says on the box: a lightly filtered experienced pulled from my (now former) day job in a customer service call centre, made interactive in a point-&amp;-click format. Lose politely, or lose spectacularly; the choice is yours.<br></p>
<h4>Version 1.1 (new!) Features</h4>
<ul><li>A branching narrative pulled from personal experience.</li><li>Over 250 lines of fully-voiced dialogue.</li><li>Slightly improved graphics</li><li>Windows PC, Macintosh, and now Linux compatible - one purchase gets all DRM-free versions<br><em>(note: Mac version currently still 1.0, version 1.1 coming soon)</em></li><li>Terrible art conveys a terrible work environment.</li><li>A brief, digestible piece of audible interactive fiction.</li><li>Featuring original music by SF of <a href="http://gameappmaker.co/" rel="nofollow noopener">Game Builder Club and Building 3d Game Birds Gameapp Maker Co.</a></li></ul>
<p><em>(note: Steam key no longer offered as it is no longer for sale on Steam)</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0My5wbmc=/original/lvIL7S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0NC5wbmc=/original/yXY3Gp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0NS5wbmc=/original/DGOhx0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0Ni5wbmc=/original/asad4o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0Ny5wbmc=/original/krsHYO.png]]
<h3>Who?</h3>
<p class="text-justify">You have been a fraud all your life, or so you thought. Telling people about demons and devils, warning them, selling them worthless wards and trinkets. Little did you know, you were right all along. Demons do exist and one has possessed your charge, who lives with you since their parents died. One night, when you were working on some new trinkets filled with mosses and bark, your charge came down the stairs, an empty look on their face. Their eyes turned violet and you could no longer move.</p>
<p class="text-justify">Then they spoke, “In exchange for their soul I require many others. You will provide them for me. Take this book and deck, they will help you with your task. There is no way out of this, don’t toy with your charges life.”&nbsp;</p>
<h3 class="text-justify">W<strong></strong>hat?&nbsp;</h3>
<p class="text-justify">“I have gone this far” is a game about seeing how far you are willing to go to protect someone you love. It is about isolation, desperation and guilt.</p>
<p class="text-justify">You play a soothsayer, a charlatan, a trickster that has been preying on the fears of people for years now. You sell trinkets and read cards and tea leaves. You never believed in what you sold people. Now you do. It is on you to free your charge from possession or even banish the demon entirely.</p>
<h3 class="text-justify">How?</h3>
<p class="text-justify">You will draw cards, roll dice and pull pieces from a tumbling block tower to generate prompts for your story. Each round of the game is a Ceremony in which you collect a soul and offer it to the demon, hoping they will free your charge. You will record each Ceremony by writing it down, recording audio or video or any other means you can think of.&nbsp;</p>
<h3 class="text-justify">Content Warning</h3>
<p class="text-justify"><strong>The odds of "winning" this game are extremely low, please consider this before you buy or play it, you will likely not succeed</strong>.<strong> Even the best outcome will have bad consequences for the characters in the game. You will be asked to do terrible things and dealing with the guilt of these actions is part of the game. Stopping at any time is a valid way to end the game. You are also allowed to cheat and break the rules the demon gives you. Be creative to reduce the harm you cause.&nbsp;</strong></p>
<p class="text-justify">This game includes the following, their intensity depends on you:<br></p>
<ul class="text-justify"><li class="text-justify">Ritual sacrifice</li><li class="text-justify">Harm to innocents</li><li class="text-justify">Loss of control</li><li class="text-justify">Manipulation</li><li class="text-justify">Intense guilt</li><li class="text-justify">Children in danger</li></ul>
<h3 class="text-justify">What you need</h3>
<ul class="text-justify"><li class="text-justify">Rider-Waite tarot deck of cards (alternatively Standard Poker Deck)</li><li class="text-justify">A single 6-sided die</li><li class="text-justify">A tumbling block tower (alternatives available)</li><li class="text-justify">10 tokens of some kind - preferably rings, necklaces, photos, a pocket watch, a rosary or anything else that has personal value, but anything will work</li><li class="text-justify">A way to record your story (Journal, Camera, Microphone, ...)</li></ul>
<p class="text-justify">This game is based on&nbsp;<a href="http://loottheroom.itch.io/wretched" target="_blank">The Wretched</a>&nbsp;by Chris Bissette and was created for the&nbsp;<a href="https://itch.io/jam/wretched-jam" target="_blank">Wretched &amp; Alone Jam</a>.&nbsp; You can find the Wretched &amp; Alone SRD <a href="https://sealedlibrary.itch.io/wretched-alone-srd" target="_blank">here</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODUuanBn/original/Wjp%2FtJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODYuanBn/original/rOR0Mg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODguanBn/original/LWdDWK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1OTAuanBn/original/rDVWSV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODcuanBn/original/lgI6Vj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODkuanBn/original/%2BBsrLG.jpg]]
<p>(<strong>Mac users</strong>: This does not work on macOS Catalina (ver 10.15) or later. There's also been a couple reports of issues playing the game, so please try out the demo before purchasing.)</p>
<p><br></p>
<p>In 'I Have Low Stats But My Class Is "Leader", So I Recruited Everyone I Know To Fight The Dark Lord', or 'IHLSBMCILSIREIKTFTDL' for short, you primarily play as the main character Josephine, fated to defeat the Dark Lord. However, as she's generally unskilled in combat, she recruits literally everyone in her hometown to fight enemies with a party of 99 characters!</p>
<p>Features:</p>
<ul><li>Nearly 100 characters to recruit and use!</li><li>A decent variety of skills and equipment for each character!</li><li>24 different elemental types, from Slashing and Fire to Legal and Financial damage!</li><li>Plenty of status effects! Become Absolved, drown in Bloodlust, and deal with Allergies!</li><li>No leveling system; with so many characters, that's just excessive!</li><li>Rather than an open world, have a simple level-based world map! Never worry about missing out on anything!</li><li>Everything from boss fights to cutting hair in a combat setting!</li><li>Puns! Mostly relegated to item descriptions and such, but if that's a selling point for you then great!</li></ul>
<p>There are over 20 worlds and 100 levels to go through! You can try the demo that includes all of World 1&nbsp;below. If you enjoy it, please consider supporting the development by purchasing a copy, or by backing me on <a href="https://www.patreon.com/DeveloperDamien" target="_blank" rel="nofollow noopener">Patreon</a>!</p>
<p>Please use the Discussion Board linked to on this page, contact me on Twitter at @DeveloperDamien, or email me at cannibalinteractive@gmail.com.</p>
<p><br></p>
<p>v1.1 update: Memory leak issue resolved (for everyone, hopefully), level titles fixed, tileset collisions making for awkward cutscenes fixed.<br>v1.11 update:&nbsp;uploaded the demo build as the full build somehow. This has now been fixed.<br>v1.2 update:&nbsp; major&nbsp;bug/scene fixes,&nbsp;"unique element" battle help, certain fights adjusted to be easier, additional boss added, some mp cost balancing.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4D3L_5-P72o" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNzgucG5n/original/itvbsx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNTAucG5n/original/9p16Lo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNTIucG5n/original/F0FbKz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzI1MDcwNzEucG5n/original/Thmrti.png]]


<p><strong>THIS BOOK NOW HAS A <a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank">SEMI-SEQUEL</a>! 97 MORE PAGES OF QUEER WITCHES!</strong></p>
<p><strong>Three months,&nbsp;room and board,&nbsp;all outstanding bills&nbsp;taken care of.&nbsp; Complimentary&nbsp;magical aptitude.&nbsp;</strong><strong>Absolutely no catch.</strong></p>
<p><span></span></p>
<p>Becoming a witch takes a lot of hard work, and not everyone has the resources to devote themselves to such a grueling process. But thankfully, magic isn’t completely unattainable! Witches need familiars in order to thrive, and sometimes the best candidate for the job is in the neighborhood instead of through a portal to the otherworld.</p>
<p>But what happens when you try on a new life and realize it fits you better than your old one? What do you do when it comes with an expiration date?</p>
<p>Substitute Familiar is the most worldbuilding-heavy light novel I’ve written yet, depicting a modern world with magic, demons, and folks trying to make it work. It’s about getting the chance to try something you’ve wanted to do for a long time, and all the unforeseen consequences that come with it. It also has a lot of self-actualization, girls kissing girls, and gender feels, because that’s what I do!</p>
<p>Please enjoy, and let’s keep making wonderful things together.</p>
<p><em>This is a light novel of 96 pages with 11 interior black &amp; white illustrations.</em></p>
<p><strong>Want to get a sneak peek? Download the free&nbsp;demo to read the first two chapters!</strong></p><p><a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ3NDQucG5n/original/g1s37K.png" loading="lazy"></a></p>
<p><strong>Want to read even more? <em>Substitute Familiar Stories</em>, the 1.5 semi-sequel featuring 25 short stories set before, during, and after this book, is <a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank">available here</a>!</strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQwOTc5LzExNDg3NzIucG5n/original/%2BL6p%2FK.png]]
<p>The Icy City sits atop a patchwork world crafted from the crumbs of a ruined universe.&nbsp;The worlds ended, and now you have the difficult task of starting over—another chance to do it right. Hipster-baroque-queer fantasy roleplaying. &nbsp;Over 300 pages of material including:</p>
<ul><li>15 adventure scenarios, ranging from small sites to dungeons to overland travel</li><li>new species and backgrounds</li><li>a new subclass for every D&amp;D 5E class: alchemized barbarian, nekomancy bard, ooze cleric, void druid, slime fighter, ice monk, heritage paladin, gelatinous rogue, pudding sorcerer, tarot warlock, bean wizard</li><li>a new 10-level class, the Hapless, an expert in stumbling into danger and getting captured</li><li>10 site-specific carousing tables with NPCs and adventure hooks</li><li>20 islands for use as a random generator or full adventure archipelago</li><li>dice drop maps for hex crawls</li><li>and more!</li></ul>
<p>The PDF is fully bookmarked for ease of navigation on computer or mobile. While it references D&amp;D 5E (such as referring to NPC stats), it's easy to convert to any fantasy RPG.</p>
<p>Not sure you're ready to take the plunge? <a href="https://erinking.itch.io/icy-city-sampler">Check out the Icy City Sampler</a> for a free preview subclass, adventure, and more.</p>
<p><em>NOTE:</em> This omnibus used to be available as a variety of digital zines. If you purchased any of those, I'm more than happy to discount your copy of the omnibus by whatever you paid. Please let me know!</p>

[img width=500 [https://img.itch.zone/aW1nLzI1MjcxNDQucG5n/original/3t%2BXxa.png]]
<p><em><strong>Note:&nbsp;While we believe in designers being paid for their work, we are unable to sensibly split the earnings of this project. Instead, we ask you to donate to a charity that helps feed those in need, for example&nbsp;<a href="https://feedingbritain.org/" target="_blank" rel="nofollow noopener">Feeding Britain</a>&nbsp;or <a href="https://amsterdam.voedselbank.org/english/volunteering/" target="_blank" rel="nofollow noopener">Voedselbank</a><span class=""></span>.</strong><br></em></p>
<p><em>In this world, Divine Beasts roam the land. Delivered to us from otherworldly realms, they lord over the grounds they manifest on. They’re incredibly violent, are replaced in mere days after being removed, and are capable of supernatural powers.</em></p>
<p><em>They’re also delicious.</em></p>
<p>Iera Entera (lit. 'Sacred Entrails') is a GM-led narrative RPG that follows a group of Worshippers - hunters and chefs that search the land for otherworldly beings and harvest their parts to make vital dishes for their local community.</p>
<p>Half the game is plotting elaborate traps to get a Divine Beast exactly where you want it, the other half is chanting prayers over its deep-fried claws and trying not to open a portal to hell by spilling the salt. It's Monster Hunter meets Overcooked.</p>
<p>This game was made by Nathan Blades and Ruben Ferdinand for the Attack and Dethrone God Jam.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OD70RHwKmmk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg5MTg4LzM3OTY5MDAuanBn/original/srxDYw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg5MTg4LzM3OTY4OTEuanBn/original/G96i6t.jpg]]
<p>A simple puzzle game with an abstract visual style. The goal is to eliminate all the blocks by moving the same blocks into one another in various ways. 20 levels to complete, some with many solutions.<br></p>
<p>
	Originally made in less than 72 hours for Ludum Dare 35. Updated with music, sounds, and special FX.</p>
<p>
	<strong>Controls</strong><br>
</p>
<ul>
	<li>WASD/Arrows to Move Cursor &amp; Select Blocks when combining Cross Blocks</li>
	<li>'SPACE'/Left Click to select a Block when combining Cross Blocks</li>
</ul>
<p><em><br></em></p>
<p><em>IGEO is based on the game PEGS by Detached Solutions, originally created for the TI-84 line of graphic calculators.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjMwMTYvNTM2MDg2LmpwZw==/original/8S3Yft.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwMTYvNTM2MDg3LmpwZw==/original/OV3nxL.jpg]]
<p><a href="https://discord.gg/RpSEaKnEeS" rel="nofollow noopener">https://discord.gg/RpSEaKnEeS</a>&nbsp;Join my Discord for any Illusory&nbsp;Dreamlight news!<span></span></p><p><br><em>"What is your motive in creating a reality bent around one's desires? Your motivation? It very well could save our lives one day, but I see no reason to attempt this feat now."</em>&nbsp;<br><br><strong>Deprimerie&nbsp;</strong><br>Deprimerie is a short, linear RPG with lots of branching paths and optional content. The game aims to be around 5 hours long for the main story, and 6 hours if you do all the stuff needed for the True Ending. It follows the adventures of Tyson, who's put into a weird world after having a strange encounter with a kitchen sink and a house fire. He soon learns he must travel this strange land and save this world, or fall to the power of Nightmare and erode away.&nbsp;<br><br><strong>Things to do in this world&nbsp;</strong><br>- Fight against the forces of darkness!&nbsp;<br>- Recruit a wide variety of party members!&nbsp;<br>- Buy powerful skills and inherit them to party members!&nbsp;<br>- BECOME THE ENEMY FOR A SHORT WHILE&nbsp;<br>- Chill with your neighbor&nbsp;<br>- Hopefully not a lot of grinding&nbsp;<br><br><strong>Release notes&nbsp;</strong><br>A few years ago, I decided to make a unique type of RPG. I wanted to tell the story of a kid lost in his own dreams. Unaware of the already existing community for similar games like Yume Nikki, I, along with my friend mothbeanie, decided to make a platformer RPG hybrid. And while that hybrid idea has been lost in it's development cycle and while it has shifted from multiple engines (GameMaker, RPG Maker 2003, and now RPG Maker 2000), the game still maintained it's core focus: exploring your mind and the crazy thoughts of yours.&nbsp;<br>And now, after two years, the game is finally done.&nbsp;<br>This is Deprimerie.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODcucG5n/original/qyCQjR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODgucG5n/original/Pp%2BeDR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODkucG5n/original/X%2B6XcK.png]]
<p class="text-center"><strong>Fight ghosts and ghosts from your past.</strong></p>
<p><br></p>
<p>It's been a long month for Sirius- not talking to most of your friends, having an angry ex talk about you behind your back, and having a friend claim... that her house is haunted? The past few weeks have been long for Hailey as well, as her house has seemingly become infested with ghosts that only she can see- that is, until a fateful day.</p>
<p><em>Image of Perfection</em> is a creepy, atmospheric RPG about confronting fears- rather than being a pure horror game, it's a story-driven RPG about accepting who you are.<br></p>
<p><br></p>
<p><strong>Demo Features:</strong><br></p>
<ul><li>20~ minutes long</li><li>Several battles</li><li>Several ways to go about things</li></ul>
<p><br></p>
<p><strong>Full Game Features:</strong><br></p>
<ul><li>$4.99 price</li><li>1-3~ hours long</li><li>Several battles and bosses</li><li>Many choices and secrets</li><li>2 endings</li></ul>
<p></p>
<p> </p>
<hr>
<p><br></p>
<p class="text-center"><strong><a href="https://twitter.com/CrystalGameWork" target="_blank" rel="nofollow noopener">Twitter</a>&nbsp; &nbsp;♦&nbsp; &nbsp;<a href="https://discord.gg/vE2Yng4" target="_blank" rel="nofollow noopener">Discord</a></strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjEucG5n/original/lLn9ww.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjcucG5n/original/pi8vpk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjUucG5n/original/5rNjbK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjQucG5n/original/%2Fa3KoS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjYucG5n/original/6MEGNA.png]]
<p></p>
<p>“A lot of games have tried to capture that childhood sketchbook-look for varying purposes, but few nail the look and feel of those clumsy, often angsty scribbles as well as Imperishable Memories.”<br><em>-IGN</em></p>
<p>“Your sixth grade diary wants to have a word with you. If that thought is as horrifying for you as it is for me, Imperishable Memories will probably be just as scary.”<br><em>-Cliqist</em></p>
<p>"A striking message of being frank with ourselves when we hurt others."<br><em>-IndieGames.com</em></p>
<p>"An hour long tour-de-force in world building with cool characters, inspiring settings, and style to spare."<br><em>-Video Game Choo Choo</em></p>
<p></p>
<div class="">
<hr>
<em>Imperishable Memories</em> is a narrative-driven shoot-em-up game developed in Unity for PC, Mac, and Linux. It combines bullet-hell gameplay with flashy cutscenes and angsty pondering to tell a story about coming to terms with horrible mistakes and gaining the strength to move on, little by little.</div>
<ul><li>With features like <strong>Relaxed Difficulty</strong> and a <strong>Story Mode with infinite lives</strong>, you don't have to worry about being a shmup expert to experience the entire game!</li><li>Roughly one hour to complete the story, with a high score system to challenge your skills afterwards!</li><li>A strange, experimental adventure with desolate landscapes, sword girls, glitchy moments, live action segments, and more!</li><li>Over a dozen music tracks, with boss characters getting their own theme songs!</li><li>Worried about specs? This game was developed on and optimized for Intel HD Graphics machines!</li></ul>
<hr>
<p class="text-center">Shoot em' Up in an Aged Former Reality from Jennifer Raye, for PC, Mac, Linux. Header art by Emma Bonne.</p>
<p><strong>Imperishable Memories Avatars:</strong> <a href="https://imgur.com/a/oVd7OG5" rel="nofollow noopener">https://imgur.com/a/oVd7OG5</a><br></p>
<hr>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ru4InHDy4Cg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjEucG5n/original/6DI2oT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzMucG5n/original/wmSUw7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjQucG5n/original/wb1euq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzUucG5n/original/pvPas0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzQucG5n/original/xlaEux.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjMucG5n/original/zp%2Fp3V.png]]
<p><strong>In Extremis</strong> is a fast-paced shoot'em up&nbsp; that aims to bring an engaging and fun experience to the player, while also experimenting with the nature of the language of videogames. With a swath of inspirations ranging&nbsp; from centuries-old mysticism to contemporary pop-culture, In Extremis suits itself for all kinds of players with smart level design and multiple ways of tackling challenges.<br></p>
<p><strong>Features</strong></p>
<ul><li>Classic shoot'em up action that brings numerous new ideas to the genre, while also being accessible to newcomers.
</li><li>Eleven stages, each one with their own visual aesthetic and distinct set of mechanics. Fight through the domains of war, sex, nostalgia, fear, melancholy, and many more.
</li><li>Twelve different weapons, each one with their own subtleties and quirks, for the player to mix and match.
</li><li>An eclectic soundtrack, featuring rhythms from big band jazz to foot-thumping electronic jams to gentle piano ballads to trippy psychedelic rock.
</li><li>A mysterious narrative, as well as numerous secrets and surprises, await brave and inquisitive players.</li></ul>
<p>///</p>
<p>Now we got the salesman pitch out of the way, let's get to the important stuff:<br></p>
<p>In Extremis was my first commercial game, released on Steam in the end of 2016; it took four years of dedicated work for it to come to fruition, as well as the collaboration of several artists and musicians.</p>
<p>It's not your regular game; each stage is unique on their own, including visuals, sound effects and gameplay systems; each moment of &nbsp;play has been exhaustively thought-out and planned.</p>
<p>The decision to release it on itch.io as a pay-what-you-want title stems from my desire to see it reach a wider audience, as well as paying respect to the countless free indie games from 2006-2012 era which inspired it.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Rw6mb82jpeo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjcucG5n/original/XJNOCy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzIucG5n/original/7Fm0c%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzAucG5n/original/p0QJ2j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjkucG5n/original/Kb4PPf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjgucG5n/original/OQ7NIU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzQucG5n/original/OZBeJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzEucG5n/original/Kaao3q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzUucG5n/original/cgRubS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzgucG5n/original/IzZWoO.png]]
<p><span class=""><em>It is a common misconception that who we are is a matter of chance. The imperceptible alignment of planets, mysterious genetic relationships, a token bestowed by each person we meet. All of this is true, but we forget that we are also a choice.<br></em></span></p>
<p><span class=""><em>We are the narratives told by and about us, what we do and what we forgo. We are immaterial and we are present. We know ourselves and we know we are not fixed.</em></span> <em><span class="">But there is still a magic in this knowledge. The practicality of our self does not discount the incantations we cast, the stars we interrogate, and the divinity we invite inside.<br></span></em></p>
<p><em><span class="">This manual is a means by which we can navigate these bodies. We draw cards and seek answers inside us. They can be illuminating, uncomfortable, perplexing, and expected. They bring us closer to ourselves, be it a self known or discovered.</span></em></p>
<p><em><span class=""><span class=""><strong>The stars watch and speak in archetypes. We align ourselves to them, and in doing so create stars of our own.</strong></span></span></em></p>
<p>◆◆◆</p>
<p><em>In me, a constellation </em>is a comic destiny personality quiz told through tarot cards and improvisational introspection. It’s designed for solo play but could be adapted for more players (or as an aspect of character creation for another game).</p>
<ul><li>No prep, no GM</li><li>45-60 minute sessions</li><li>Play with any tarot deck (or use your real natal chart)</li><li>Lots of astrology flavor</li></ul>
<p>Inspired by the many works of Jammi Nedjadi and Maria Mison.</p>
<p><em>Content warning: explores themes of dysphoria, symbolic violence, sex, and anxiety. Be kind to yourself while playing.</em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjIzODYuanBn/original/eSQSEL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjIzOTMuanBn/original/3rzNzQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjI0MTYuanBn/original/KM9Gl5.jpg]]
<p>There is a river that has existed for as long as you have, for as long as even the eldest among you. It has cut through your lives. It takes and it gives. You sometimes wonder just how deep it really goes.<br><br>You are a Finder. You, with your brave heart, swim through its currents, brave its whirlpools, and understand its undercurrents. Still, there is much left lost in the deep. What will you find and what will you give to the River?</p>
<p>&nbsp;---</p>
<p>In The Deep, Deep River is a GM-less narrative game for 2-4 people that seeks to explore&nbsp; the many things that we would rather keep deeply buried in the ocean of ourselves.&nbsp; It uses a d10 dice pool system for its resolution with unique mechanics to determine success and failure.&nbsp;<br></p>
<p>Simple and seamless, this game is great for online play via play-by-post.&nbsp;</p>
<p>---</p>
<p>In the Deep, Deep River was originally created for Scrapsburgers Anthology of Games, coming soon to Kickstarter. The Kickstarter version will contain exclusive art, a swanky new layout&nbsp;with slightly different content!<br></p>
<p>Thank you to Scrapsburgers for bringing me into this amazing anthology!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjMxNDUwLzMzNzEyNjIucG5n/original/YYn7BW.png]]
<p>Originally made as a NewHive commission, this stand-alone application game is an&nbsp;interactive narrative work that retells the origin story of salesforce.com as a point-and-click misadventure.<span></span></p>
<p>A discussion on speculative fiction and it's relevance to start-up culture/language/myth-making &nbsp;with Claire Evans can be found <a href="http://motherboard.vice.com/en_us/article/8qxewv/in-the-hollow-of-the-valley" rel="nofollow noopener">here</a>.</p>
<p>An interview with Lindsay Howard&nbsp;about this work can be found <a href="http://newhive.com/newhive/nicholas-obrien-interview?&amp;no_paging" rel="nofollow noopener">here</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NDMucG5n/original/W%2BBr8n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NTEucG5n/original/1R4G6L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NDQucG5n/original/%2FxRyTG.png]]
{{HTML5}}
<p>
	Play as the mystical Indigo Child and save some souls while wandering through the forest. The game is designed to work with both keyboard and 360 controller. It is a gamejam style experience.</p>
<p>
	<strong><br>
	</strong>
</p>
<p>
	<strong>Press mouse or "A" to call, hold to sing.</strong>
</p>
<p>
	<img src="https://img.itch.zone/aW1hZ2UvMzE4OTQvNjQ3MjUyLmdpZg==/250x600/PeovgJ.gif" alt="indigo" loading="lazy">
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzE4OTQvNjQ3MjUyLmdpZg==/original/SQ10s0.gif]]
<p>Yumi is a high school girl who is struggling to cope with her past.&nbsp;<br></p>
<p>Before, she was just another normal girl living happily together with her family. Now, her family has fallen apart, and Yumi finds it difficult to stay motivated in her day-to-day life, crushed by a growing well of darkness, slowly consuming her from the inside out.</p>
<p>&nbsp;Why did her brother leave?&nbsp;</p>
<p>Why did her parents fall apart?</p>
<p>&nbsp;She is lost in a sea of unanswered questions, and on the brink of losing her mind. Help Yumi as she struggles to uncover the truth of her broken past and mend broken relationships to find herself once again.&nbsp;</p>
<p>Inside The Mirror is a story driven visual novel experience where players will discover more about the different perspectives around a difficult, real-life situation. While there is a portion of interactive content, you mainly click to progress the story, art, and music!</p>
<p>&nbsp;Key Features</p>
<p>An engaging, emotional story describing how hardships strain relationships.</p>
<p>&nbsp;A 100% original soundtrack&nbsp;</p>
<p>Several main characters and dozens of unique sprites.&nbsp;</p>
<p>Inside The Mirror is a short-medium length visual novel that should take around one hour and thirty minutes to complete.</p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIwLmpwZw==/original/cgBXKy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIxLmpwZw==/original/0Au%2BIb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIyLmpwZw==/original/%2BO1jbX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODI1LmpwZw==/original/9%2B8xIi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIzLmpwZw==/original/TsaQmF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODI0LmpwZw==/original/hojpFe.jpg]]
<p><em><strong>A toy ecosystem with fully simulated genetics and evolution. Will you tinker with DNA or sit back, relax, and see if life finds a way?<br></strong></em></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NzAxNjcuZ2lm/original/xnGQ6T.gif" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<p><em>In a universe driven by targets, a faceless corporation employs you to create an evolving ecosystem you can never hope to control...</em></p>
<p>Intelligent Design: An Evolutionary Sandbox is a god game with fully simulated genetics and evolution. Create species of plants, herbivores and carnivores and try to control the ever evolving ecosystem. Design and create genetically modified organisms, but remember when you start tampering with genetics it is hard to undo your mistakes...</p>
<p>This is a game for people who don’t want to be given all the answers. A game for people who like to experiment with a simulation, at their own pace, and watch what happens.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI4NzAxNjguZ2lm/original/sIn%2FFJ.gif" loading="lazy"><br></p>
<p>
	<strong>Key Features</strong></p>
<p><em>Fully modelled genetics and evolution</em><br><br>The behavior of each organism are determined by their genetics. How tall will a plant grow? How fast can an herbivore run? How often does a carnivore seek prey? These genetics are passed down generation after generation along with random mutations. Evolution is fully simulated, there are no tricks or statistical approximations. You are watching life evolve on your computer.<br></p>
<p><em>Science to be Done</em></p>
<p>What do all those genes actually do? How is the world score calculated? What does world efficiency even mean? Much like a real scientist you will need to investigate, analyse and work with other players to try and answer these questions. To help you along the way the game outputs data in xml files so you can really get your science on.&nbsp;</p>
<p><em>Genetic Engineering</em></p>
<p>Create your own genetically modified organisms, but be careful, once a genome has entered your ecosystem it may be hard to undo the damage ... and are you sure you really know what those genes do yet?</p>
<p><em>Secrets to Discover</em></p>
<p>Who is employing you to create this ecosystem? Why are they doing it? Why are you doing it? What are those targets for? The answers to these any many other questions are out there, you just need to work together and find them...</p>
<h3>Check out our newest game</h3>
<iframe frameborder="0" src="https://itch.io/embed/430934?linkback=true&amp;border_width=3&amp;bg_color=faefd4&amp;fg_color=222222&amp;link_color=fa5c5c&amp;border_color=899faf" width="556" height="171"><a href="https://pillbuginteractive.itch.io/making-it-home"><span class=""></span>Making it Home by Pill Bug Interactive</a></iframe>

<iframe width="720" height="450" src="https://www.youtube.com/embed/GJi7BS8XFBk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg0LnBuZw==/original/bGvAsD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgxLnBuZw==/original/Aom2Q3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTc4LnBuZw==/original/VljRij.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTc5LnBuZw==/original/oYG5H9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgwLnBuZw==/original/kpFyia.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgyLnBuZw==/original/25qiGW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg1LnBuZw==/original/qE7c2%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg4LnBuZw==/original/XdoX8k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgzLnBuZw==/original/Ad1Niw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg3LnBuZw==/original/rutNcg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg2LnBuZw==/original/3f2yUX.png]]
<p>Soundtrack from the free interactive music experience, inter-view.&nbsp;<a href="https://megancarnes.itch.io/inter-view">megancarnes.itch.io/inter-view</a></p>
<h3>credits</h3>
<p>released January 21, 2019&nbsp;</p>
<p>Artwork: Soju Shots&nbsp;<br>Flute: Marybeth Kern&nbsp;<br>Guitar: Matthew Lister&nbsp;<br>Tuned Wine Glasses: Jonny Rodgers</p>
<h3>license</h3>
<p><span class=""></span>all rights reserved</p>

[img width=500 [https://img.itch.zone/aW1nLzE3OTM3NDYucG5n/original/NpvrLZ.png]]
<p>inter-view is a game where your choices create a unique piece of music.</p>
<p><br>Created, programmed, and music by Megan Carnes. I want to make music for your game! <a href="https://megancarnesmusic.com" rel="nofollow noopener">https://megancarnesmusic.com</a><a href="http://www.megancarnesmusic.com" rel="nofollow noopener"></a></p>
<p>Soundtrack album available <a href="https://megancarnes.itch.io/inter-view-soundtrack">here</a> and <a href="https://megancarnes.bandcamp.com/album/inter-view-original-soundtrack" rel="nofollow noopener">here</a>.</p>
<p>Written by: David Sugarman, Megan Carnes<br>Artwork by: Soju Shots<br>Flute: Marybeth Kern<br>Guitar: Matthew Lister<br>Tuned wine glasses: Jonny Rodgers</p>
<p><br></p>
<p><strong>PARTNERS</strong><br>Alex Loughborough<a href="https://andyramone.bandcamp.com" target="_blank" rel="nofollow noopener"><br>Andy Ramone</a><br>Anna Donnell<br>Annette J Nowacki<br>Anonymous<br>Austin Hall<br>Brett Kuehner<br>Chase Kimball<br>Chris Kvasnicka<br>Daniel White<br>Dave &amp; Rose Carnes<br>Dave Chai<br>Dave Yee<br>Diana Weinstein Cauthen<br>Doron Kipper<br>Elaine Wessels<br>Eldredd Wolf<br>Evyn Williams<br>Gabe&nbsp;Castro<br><a href="http://www.gregnicolett.com" target="_blank" rel="nofollow noopener">Greg Nicolett</a><a href="https://www.facebook.com/hawcode/" target="_blank" rel="nofollow noopener"><br>Hawcode</a><br><a href="https://www.instagram.com/jcpov/" target="_blank" rel="nofollow noopener">James Choi</a><br>Jayne Hardin<br>Jeffrey Benzing<br>Jerry Carnes<br>John Heinze/<a href="https://open.spotify.com/artist/3vbIqkJmRKG5KxMcapJCEj?si=7OqfmIhmTfmKsO779k0Zjg" target="_blank" rel="nofollow noopener">Boss Fight</a><br>John Leonard<br><a href="http://mysticsister.net" target="_blank" rel="nofollow noopener">Jordyn Schwersky</a><br>Josh Kalvelage<br>Lena Laub<br>Logan Deane<br>Luis G. Romero<br><a href="http://acrookedheart.com" target="_blank" rel="nofollow noopener">Matt Tardiff</a><br>Megan McCaffrey Morris &amp; Fran Lonergan<br>Mikee Pourhadi<br>Mitch Carnes<br><a href="https://vimeo.com/user9475256" target="_blank" rel="nofollow noopener">Olivia Cauthen</a><br><a href="http://twitter.com/pyro_mariner" target="_blank" rel="nofollow noopener">PyromaniacMariner</a><br>Raymond Harris<br><a href="https://www.instagram.com/oh_that_ryan/" target="_blank" rel="nofollow noopener">Ryan LaBee of BeeCause Films, LLC</a><br><a href="https://www.instagram.com/wxrringtxn/?hl=en" target="_blank" rel="nofollow noopener">Sarah Hickey</a><br>spun<br><a href="http://" target="_blank" rel="nofollow noopener">Super 80s World</a><br>Tara McNamara<br>Tre Folensbee<br><a href="https://www.youridekker.com" target="_blank" rel="nofollow noopener">Youri Dekker</a><span></span></p>

[img width=500 [https://img.itch.zone/aW1nLzE3Nzc1OTQucG5n/original/8SaMf3.png]]
<p>INTERSTELLAR ERRANDS is a DM-less RPG for 1-5 players who want to have a quick space-bound adventure over breakfast, lunch, or an evening snack. Invent a character, find a planet for them to travel to, and roll dice to find that mystical device for your tiny alien mentor! <br></p>
<p>The entire RPG fits onto a single-sided page, so you can just print and post it to your fridge door for convenient snacktime play. All you need is a d6, a d20 (optional), and your imagination!<br></p>
<p>Made for the FRIDGE RPG JAM hosted by ludipe.<br><a href="https://itch.io/jam/fridge-rpgs">https://itch.io/jam/fridge-rpgs</a><br></p>

[img width=500 [https://img.itch.zone/aW1nLzI5MzY2OTUuanBn/original/wjBShb.jpg]]
<p class="text-center"><em>You don’t ever remember signing a contract, but The Company owns you now, body and soul.&nbsp;You have a debt, and they’re coming to collect. Whatever you were before, this is your purpose now:<br>Finding a way to keep the creditors at bay.<br></em><em>Finding a way to get back...</em></p>
<h1 class="text-center">INTO THE BLACK</h1>
<p>INTO THE BLACK is a sci-fi adventure game using the PINKHACK system. Somewhat of a personal love letter to the Mass Effect franchise, Into the Black is a picaresque adventure game where the players must navigate and explore&nbsp;a strange and wonderous galaxy while deeply indebted to an interstellar corporation. Life among the stars, then, is about treading the razor's edge of struggling for survival and finding joy and love where one can.</p>
<p>This is currently an ASHCAN EDITION. I churned this out over the course of a weekend, tinkering with the PINKHACK system (a blend of Jared Sinclair's The Vanilla Game, Christian Mehrstam's Whitehack, and Chris McDowall's Into the Odd).</p>
<p>Inside this 97-page book you'll find:</p>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both</li><li>A&nbsp;lightweight 3-stat, 3-class&nbsp;OSR system requiring only a few d20s and d6s</li><li>A randomized character system that provides compelling starting points for your adventurer</li><li>50 creatures to encounter on your interstellar journey</li><li>A miscellanea section including ancient data-disks, clothes, drugs, corporations, space pirates, wandering star-nomads, space caravans, a technobabble generator, and strange sci-fi discovered items</li><li>A die-drop-based mapping system that allows for the collaborative creation of interesting adventure sites, settlements, planets, encounters, and cosmic anomalies</li><li>List of desirable goods to barter, buy and sell across the galaxy to pay your debt, as well as complications that might arise on the journey</li><li>Powerful telekinetic abilities and technological wonders</li><li>Rules for starship combat and a selection of vessels to battle, steal, avoid, and strive for</li><li>Art by the fabulous Evlyn Moreau, and&nbsp;Mike Winkelmann (aka Beeple)</li></ul><h3>Reviews:</h3><p><em>"The result is a homespun corner of space full of potential. An emergent story of local warlords or ancient tech can play out, or the group can soak in the emotional melange of finding a series of barren, if beautiful, landscapes while they watch the twin suns dance below several horizons."</em><br>-Chase Carter, <a href="https://www.dicebreaker.com/games/into-the-black/news/into-the-black-rpg-mass-effect" rel="nofollow noopener">Dicebreaker</a><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI0LmpwZw==/original/ZVIELs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI1LmpwZw==/original/VKAQuw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI2LmpwZw==/original/dSbgcV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI3LmpwZw==/original/n5zWlC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODU5LmpwZw==/original/nmVTAh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODYwLmpwZw==/original/4k%2Bq2y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODU4LmpwZw==/original/JXyT3Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODYxLmpwZw==/original/rEIRL%2F.jpg]]
<p><span class="">Into the Fae Woods is a solo journaling game about wandering in the woods and finding a companion along the way.</span><span></span></p>
<p><span class="">To play the game, you only need a way to write. Follow the narrative and record your thoughts and answers, embellishing along the way as desired to create your story.</span></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjEwMjgucG5n/original/TVUH%2FV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjAucG5n/original/EN%2FUda.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjEucG5n/original/gfVUwj.png]]
<p>Welcome to the Glacier. It is a
mysterious place just out of humanity's grasp, just a little bit
further than people, with their lights and their fire, can reach. </p>
<p>That is not, of course, to say it is
uninhabited. Nor is it to say that no one ever ventures into the
Glacier. People have their reasons. </p>
<p>You have your reasons.</p>
<p>Whatever their reason for trespassing
in Winter's sacred territory, people try and quickly find that they
do not belong here. </p>
<p><strong>You Will Need:</strong></p>
<ul>
	<li>One standard deck of playing cards
	</li><li>Two six-sided dice
	</li><li>A character marker like a figurine
	or small toy
	</li><li>A piece of paper and a pencil
</li></ul>
<p><strong>You Might Want:</strong></p>
<ul>
	<li>A hot drink
	</li><li>A favorite blanket
	</li><li>A nice journal
</li></ul>
<p>Into the Glacier is a single-player journaling (or, if you prefer, map-making) game inspired by lots of things, including:</p>
<ul>
	<li>Edmonton winters
	</li><li>The Great Glacier sequence in
	Final Fantasy 7, my favorite part of one of my favorite games.
	</li><li><a href="https://sorceress-witch.itch.io/mapping-the-catacombs-zine">Mapping the Catacombs</a>, from
	Sorceress &amp; Witch
	</li><li>The Wretched &amp; Alone games,
	based on <a href="https://loottheroom.itch.io/wretched">The Wretched,</a> from Loot the Room
	</li><li><a href="https://galazor.itch.io/the-estate-of-baron-archambaud-an-ingrate">The Estate of Baron Archambaud</a>, just a real work of art of a puzzle game.</li><li>The 2020 Winter Jam, which I
	barely completed this game in time for.&nbsp; &nbsp;
</li></ul>
<p><strong>Content Warnings:</strong></p>
<ul><li>Sickness - The Rimerein Unicorn</li><li>Death - The Ice Dragon’s Feather</li><li>Death - 4 of Spades</li></ul>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NTQucG5n/original/7sC4A7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NTgucG5n/original/WMKuLx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NjIucG5n/original/M4Ruc4.png]]
<p>Originally inspired by Touhou Project's Seija Kijin, who has a screen-flipping attack in a shoot-em-up which I'm sure has never caused anyone to ragequit Touhou 14. Unfortunately, screen flipping isn't all she's going to do to you here...</p>
<p>The base gameplay is fairly standard tile matching, but your actual objectives may change from level to level and complications will quickly begin compounding. Hopefully you can clear everything before Reimu has some kind of stress aneurysm. Click "Level 1" on the info screen to begin.<br></p>
<p>Credits: Character portraits and some icons by skullstho. Palette inspiration for the portraits from @MoiWool. A number of sound effects courtesy of http://thinksoundeffects.com. Font courtesy of "avrahamcornfeld" on Github; see included license for more details.<br></p>
<p>Programming, design, music, and remaining visual assets by DC. This sounds like DC did most of the work, but have you seen those portraits? Good lord. Plus, there's a reason the music/visuals are so minimalist, and it ain't skulls. Touhou Project and all associated IP belong to ZUN / Team Shanghai Alice, to whom we are thankful every day for allowing such a vibrant fan work community to exist.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTEyMTg0LzUxNTY5NzAucG5n/original/gBv%2BrW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEyMTg0LzUxNTY5ODAucG5n/original/6IKe37.png]]

<h2><em>Iron Edda Accelerated&nbsp;</em></h2>
<p>A game of brave warriors fighting to keep their homes, lives, and freedom. It is a game of magic and intrigue.&nbsp;</p>
<p>It is the story of ordinary people who fight alongside the towering skeletons of long-dead giants.&nbsp;</p>
<p>It is the story of those who embrace an unknown afterlife to bond themselves to those giant&nbsp;bones.&nbsp;</p>
<p>It is the story of those who cling to tradition and to the power that their roles in society gives them, even though all crumbles around them.&nbsp;</p>
<p>It is the story of a world irrevocably changed.&nbsp;</p>
<p>It is the story of Ragnarok, Fimbulwinter, the end of time itself.</p>
<p><strong>If there is to be a future at all</strong>, it will be because of you and what you do. Ultimately, this world is your world. Fate is designed for the players to have an impact on the world around them. <em>Iron Edda Accelerated</em> is no different. You and the people around you will shape the future, for your holdfast and the world at large.</p>
<p>Warrior, thrall, seer, Jarl... All have the chance to feat in Valhalla. All could dine with the fallen in Hel. Your fate is yours to decide.&nbsp;</p>
<p><span class=""></span><em>Iron Edda Accelerated is a Fate Accelerated RPG designed for 2-6 players.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc5LmpwZw==/original/nuEQr6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc0LmpwZw==/original/vqW3hL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTczLmpwZw==/original/bMoYs5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc1LmpwZw==/original/1ianqF.jpg]]

<figure><img src="https://img.itch.zone/aW1nLzUxNTgzMjQucG5n/original/eomltB.png" loading="lazy"><br></figure>
<p class="text-center">
</p>
<figure><img src="https://img.itch.zone/aW1nLzUxNTg1NzcucG5n/original/KjF87U.png" loading="lazy"></figure>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUxNTg1NzgucG5n/original/awr0z4.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzUxNTg1NzkucG5n/original/YoI%2F8%2F.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzUxNTg1ODIucG5n/original/xlMwtm.png" loading="lazy"></p>
<p class="text-center"><a href="https://twitter.com/rieindie" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUxNTg1ODcucG5n/original/jRQp1K.png" loading="lazy"></a>&nbsp;&nbsp;<a href="https://www.instagram.com/rieindie/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUxNTg1OTAucG5n/original/FEA%2BMH.png" loading="lazy"></a>&nbsp;&nbsp;<a href="https://rieindiegames.tumblr.com/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUxNTg1OTYucG5n/original/PS8gSw.png" loading="lazy"></a>&nbsp;&nbsp;<a href="https://www.patreon.com/rieindie?fan_landing=true" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUxNTg1OTgucG5n/original/UKMsYM.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://www.kickstarter.com/projects/rieindie/ise-and-kai-chosen-throne" rel="nofollow noopener"></a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzUwOTEzOTUuZ2lm/original/RMZkiT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzUxMDk0NzEuZ2lm/original/ZNqaJk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzUxMDk0NzMuZ2lm/original/mlwRc3.gif]]

<p>The detective prodigy Jam already knows who did the crime, but what the crime actually was remains to be determined.<br></p>
<p>It's up to you to guide Jam through eight rooms of point-and-click puzzles, gather evidence, and deduce what really happened in the  Mystery of the Mysteriously Spooky Mansion.<br></p>
<p><strong>Features</strong></p>
<ul><li>30+ minutes of point-and-click mystery gameplay</li><li>15 different endings (plus an extra secret one)</li><li>At least two or three jokes</li></ul>
<p><em>Includes download of original soundtrack (2 songs).<br></em></p>
<p><em>Content warning: PG-13 swearing; mild body horror; some unpleasant images. No jump scares.<br></em><em>Accessibility options: Font select; text speed slider.</em><br></p>
<p><em>Jam and the Mystery of the Mysteriously Spooky Mansion was made  by Res, an indie game developer working from British Columbia, Canada.<br></em></p>
<p><em>Spanish translation by Gambas.</em></p>
<p>——————————<em>——</em><br></p>
<p>La detective prodigio Jam ya sabe quién cometió el crimen, pero aún le falta determinar qué fue lo que ocurrió.</p>
<p>Queda en tus manos guiar a Jam a través de ocho cuartos con acertijos estilo point-and-click, recolectar evidencia, y deducir qué fue lo que en verdad sucedió en el Misterio de la Mansión Misteriosamente Espeluznante.</p>
<p><strong>Incluye</strong></p>
<ul><li>Más de 30 minutos de juego de misterio point-and-click</li><li>15 finales diferentes (más uno secreto)</li><li>Al menos dos o tres chistes</li></ul>
<p><em>Incluye la descarga del soundtrack original (2 canciones).</em></p>
<p><em>Advertencias: contiene insultos PG-13, body horror ligero y algunas imágenes perturbadoras. No contiene jumpscares.<br>Opciones de accesibilidad: elección de fuente; elección de velocidad de texto.</em></p>
<p><em>Jam y el Misterio de la Mansión Misteriosamente Espeluznante fue creado por Res, un dev de videojuegos indie ubicado en British Columbia, Canadá.<br></em></p>
<p><em><span class="">Traducción al español por Gambas.</span></em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzQ0Nzg3MzIucG5n/original/AsSyL7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk3MzcucG5n/original/dmBGoV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk3MzkucG5n/original/cyiJoD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk2MDYucG5n/original/JXO6i9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk1NTQucG5n/original/qFB8IO.png]]
<p>Gardens say a lot about who you are.<br></p>
<p>Jardin is a poetic and procedural walk on an endless lake, with segmented parts of XIX's french poems. Wander and build your own garden, with your unique path.</p>
<p><br></p>
<p><em>This game was made during Global Game Jam 2019, with the two following diversifiers :</em></p>
<p><em><br></em><br></p>
<p><em>- Keep it simple</em><em><br></em></p>
<p><em><em>- 20-XIX</em></em></p>
<p><br></p>
<p><br><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/1KKvNfcmCO8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyMzkucG5n/original/L%2FYPy5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyODQucG5n/original/HZwGye.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyODAucG5n/original/WQIs0m.png]]
<p>Kitty City: A bustling commercial metropolis nicknamed The Big Milkbowl, an animal paradise where young cats can chase their dreams like birds in the sky. From the bright lights of the skyline to the sedate green spaces peppered around the city, it's a hell of a town.</p><p>But beneath this dazzling facade is an underlying layer of darkness that the average joe wouldn't have the first idea about. No city is perfect, and Kitty City has more crime than you could shake a feather-on-a-stick at. `Nip dealers, extortionists, and worse..</p><p>When a frog turns up cold in Flirtybird Park in the middle of the day, the fuzz don't have any leads and don't know where to turn. Lucky for them, one cat trots alone through the seedy backstreets of Kitty City, doing what he can to make it a better place: JB Hairboll, Private Eye.<br></p><p>A tribute to 1980s-1990s Japanese detective games such as JB Harold and Saburo Jinguuji, JB Hairboll is a short mystery that is suitable for players of all ages.</p><p>Created within 30 days for NANORENO 2015 by Nurvuss, Justyna Burzynska and Borscht Boll the Cat.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NzAuanBn/original/zevTeX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NjkuanBn/original/QIjY53.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NzEuanBn/original/NGDerI.jpg]]
<p><strong>Jetscout: Mystery of the Valunians</strong> is a jetpack-based platformer by Dustin Auxier where you explore diverse alien environments to solve the mystery behind the Valunians whose friends are trapped in an enormous containment facility!</p>
<p><br>Play as Muun, a Jetscout initiate, as you boost, flip, and burn your way through hostile planets to fight a mind-bending cosmic evil!<br></p>
<h2>Key Features</h2>
<ul><li>A dark story pieced together across an entire solar system</li><li>16 different suits with unique stats to unlock</li><li>3 difficulty modes to fit individual playstyles</li><li>Unlockable bonus missions for real challenge-seekers</li></ul>
<p></p>
<p></p>
<p><a href="https://dustinaux.itch.io/jetscout-boot-camp"><img src="https://img.itch.zone/aW1nLzUyOTY3NTgucG5n/original/EpkJ0b.png" loading="lazy"><br></a></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zrEBO7Cy-tg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTAucG5n/original/Q92A8%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTEucG5n/original/jb5bZr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDcucG5n/original/OhiDhO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDkucG5n/original/6jSMlR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDYucG5n/original/ItgmJH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDgucG5n/original/jb2K3T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTMucG5n/original/0Dreve.png]]

<p>Made with Gracie&nbsp;Straznickas and Anthony Tate.&nbsp;<br></p>
<p>(Game card are to be printed on 3.5*5.5 inch format)</p>
<p>This is an education card game made with Chicago Alliance Against Racist and Political Repression (CAARPR). This is intend to use as a education tool to help community understand the importance of understanding social justice system and how to protect themselves when encounter conflicts with law enforce. This is also use by CAARPR to promote the CPAC bill that aim to address the issue of police brutality and increase police&nbsp;accountability in Chicago.&nbsp;</p>
<p>The game can be played solo or&nbsp; in a group setting.&nbsp;</p>
<p><br></p>
<h3></h3>
<p><span></span></p>

[img width=500 [https://img.itch.zone/aW1nLzI1MjMyMTgucG5n/original/1wg7Sm.png]]
<p>I learned enough FamiStudio to make a decent sounding chiptune song.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/70teIlCIhVY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU2NjM0MzcucG5n/original/1gzr0I.png]]
<p>JRNL is a tool built for easy daily journaling. When you open JRNL each day&nbsp;and write a journal entry, the entry gets saved and that day's square is filled in&nbsp;on the calendar. Previous days' entries can be viewed by clicking on their corresponding squares on the calendar.&nbsp;<br></p>
<p></p>
<h1>Features</h1>
<p>While JRNL is intended to be simple and easy to use, it still provides several advanced features:&nbsp;</p>
<ul><li><strong>Daily Notifications:</strong> Set a time for JRNL to remind you to write in your journal.</li><li><strong>Full-Year Export:&nbsp;</strong>Export a year's worth of journal entries into a single,&nbsp;archivable HTML file.</li><li><strong>Read-Only Past Entries:&nbsp;</strong>By default, entries can only be edited on the day that they are created.</li><li><strong>Themes:&nbsp;</strong>Change the look of JRNL&nbsp;with 5 built in color themes.</li><li><strong>Smart Text Editing:&nbsp;</strong>Entries are edited using a rich-text editor, allowing for text formatting (bold, italics) and the ability to include&nbsp;links and images.</li></ul>
<p>All of these features can be enabled/disabled or customized by editing a configuration file that is generated the first time JRNL is launched.</p>
<p><strong>Read the free-to-download User Manual (found in the Demo Download) for more detailed feature information.&nbsp;</strong><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5NTIucG5n/original/spSOIj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5MjUucG5n/original/nKVORD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5MjcucG5n/original/ICAJ3I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5NTEucG5n/original/eQqiHy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5NTAucG5n/original/9pBLNb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzM3NTc5NDkucG5n/original/x8s6ce.png]]

<p><em><a href="https://bit.ly/KabaretSTEAM" rel="nofollow noopener">https://bit.ly/KabaretSTEAM</a>&nbsp;</em>=================&nbsp;<strong>ABOUT </strong>=================<em></em><br></p>
<p><strong><em>Welcome to the Kabaret - where monsters from Southeast Asian myths and folklores dwell. Decipher tea leaves, play traditional games, and question your humanity.</em></strong><br></p>
<p><strong>Kabaret</strong> is a Southeast Asian visual novel filled with monsters from myths and folklores from the region.</p>
<p><strong><em>"The truth is this, every monster you have ever met, was once a human being."</em></strong></p>
<p><strong></strong>Cursed into a monster, Jebat journeys into a realm called the "Alam". Taken in by the charismatic owner of Kabaret, known only as The Caretaker, Jebat is tasked with providing tasseomancy services to the dwellers in an effort to gather information on how to break his curse.</p>
<p>Each of the mythical creatures who visit the Kabaret come from Southeast Asian folklores and legends. Listen to their unique stories, give advice through tasseomancy, and find a way to break the curse.<strong></strong><br></p>
<p>&nbsp;&nbsp;================= <strong>FEATURES&nbsp;&nbsp;</strong>=================</p>
<ul><li>Brew tea and decipher the meaning behind the leaves.</li><li>Play traditional Southeast Asian games.</li><li>Get to know characters inspired by actual myths and folklore from the region.</li><li>Featuring sounds of <a href="https://www.hellouniverse.net/" target="_blank" rel="nofollow noopener">Hello Universe</a> and <a href="https://www.youtube.com/channel/UCSqp0r80iQhQX7YQdLs1Vpw" target="_blank" rel="nofollow noopener">Sambasunda Indonesia</a>.</li></ul>
<p><br></p>
<p>We are also on Steam! Wishlist us there!</p>
<p><a href="https://bit.ly/KabaretSTEAM" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUzNDI5MTEucG5n/original/a3%2BdOJ.png" alt="Steam Wishlist" title="Steam Wishlist" loading="lazy"></a></p>
<figcaption>Click here to wishlist us on Steam!</figcaption>
<p></p>
<p><a href="https://bit.ly/PTGames" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzUzNDM1NDMucG5n/original/iBBBqn.png" alt="Discord" title="Discord" loading="lazy"></a></p>
<figcaption>Come drink tea with us.</figcaption>
<p></p>
<p>Persona Theory Games <a href="https://www.personatheory.com" rel="nofollow noopener">web</a>, <a href="https://twitter.com/personatheorymy" target="_blank" rel="nofollow noopener">Twitter</a>, <a href="https://www.instagram.com/personatheory/" target="_blank" rel="nofollow noopener">Instagram</a>&nbsp;and <a href="https://www.facebook.com/personatheory/" target="_blank" rel="nofollow noopener">Facebook</a>.&nbsp;</p>
<p>As seen on&nbsp;<a href="https://www.mygameon.my/posts/kabaret-a-story-of-having-tea-with-pontianak-while-listening-to-cabaret-songs" target="_blank" rel="nofollow noopener">MyGameOn</a>&nbsp;|&nbsp;<a href="https://kakuchopurei.com/2019/10/22/persona-theory-malaysia-visual-novel-creators-interview/" target="_blank" rel="nofollow noopener">Kakuchopurei</a>&nbsp;|&nbsp;<a href="https://sea.ign.com/kabaret-pc/167792/feature/kabaret-shines-unique-spotlight-on-mythical-southeast-asian-monsters" target="_blank" rel="nofollow noopener">IGN SEA</a> |<a href="https://indiewatch.net/2021/01/14/most-anticipated-indie-games-for-2021/" target="_blank" rel="nofollow noopener">Indie&nbsp;Watch</a>&nbsp;| <a href="https://www.gamespot.com/amp-articles/50-indie-games-to-keep-an-eye-on-in-2021/1100-6485722/" target="_blank" rel="nofollow noopener">GameSpot</a><span></span></p>
<p><br></p>
<p><strong>Once you're done, please consider dropping us a feedback here -&gt;&nbsp;</strong><strong><a href="https://forms.gle/LDuaHNtUGUvgTyvd9" rel="nofollow noopener"></a><a href="http://bit.ly/feedback-kabaret" target="_blank" rel="nofollow noopener">bit.ly/feedback-kabaret</a></strong><a href="https://forms.gle/LDuaHNtUGUvgTyvd9" rel="nofollow noopener"></a></p>
<p><br></p>
<p><strong>DISCLAIMER: This game contains elements that are not suitable for some, and contains&nbsp;violence, blood and gore, and&nbsp;strong language.</strong></p>
<p><br></p>
<p>Mac build coming soon! :D</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzUzMzk0NjIucG5n/original/tZxw5z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzUzMzk0NjMucG5n/original/ac85WH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzUzMzk0NjQucG5n/original/xrAT%2BK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzUzMzk0NjUucG5n/original/dCt2qa.png]]
<blockquote>Kaijus and Skyscrapers - Is there a more iconic duo?<br>Aid your Kaiju in rising to greater and greater heights in the world's tallest building, while dodging pesky obstacles that may threaten your ascent!</blockquote>
<p>Kaiju Klimb was built in a Game Jam, performed by 7 beginners.<br>Their love for cute animals and world annihilation inspired those deary designers into developing a minimum viable product of what seems to be a sign of impending doom... Or they just love giant adorable monsters.</p>
<p>Heavily inspired in the monsters from <em>The</em>&nbsp;<em>PowerPuff Girls</em>, famous giant creatures like <em>Godzilla</em>,<em> King Kong</em>, and<em> Mothra </em>as well as mythology from countless cultures around the world, Kaiju Klimb evokes that addicting gameplay from simple games into a sweet casual style, perfectly setting the mood for&nbsp;the destruction of earth while you relax!</p>
<p>A bigger and better sequel to Kaiju Klimb is already in development, offering a continuous flow of update containing additional monsters, levels, catchy songs and new addictive ways to play!</p>
<p>However, just like every designer on earth...&nbsp;<strong><em>We are penniless!&nbsp;</em></strong>You could help us by donating any token amount or you can...</p>
<p class="text-center"><strong><em>PLAY IT FOR FREE ON YOUR PHONE!</em><del><br></del></strong><em><del>with ads of course</del></em></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDcucG5n/original/a9Lwde.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDYucG5n/original/X8vPAf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDkucG5n/original/bhYtdv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDgucG5n/original/%2BHzEfT.png]]
<p>KAIMA is the story of a planet being eaten away by monsters, and a girl determined to survive.</p>
<p>this game was made over the course of 2 months, so it's pretty short to run through--takes an hour or so to see everything. there are 5 endings (one is a secret!)</p>
<p>CONTENT WARNING:<br>strong language, violence, cannibalism, and character death. occasional screen shakes and flashes during certain scenes.<span></span><br></p>
<p>you can get <a href="https://lydianchord.bandcamp.com/album/kaima-soundtrack-with-bonus-tracks" rel="nofollow noopener">a higher quality version of the soundtrack with bonus tracks</a> over on bandcamp!</p>
<p>* CREDITS *</p>
<ul><li>art+story -&nbsp;<a href="https://twitter.com/nomnomnami" target="_blank" rel="nofollow noopener">NomnomNami</a></li><li>music -&nbsp;<a href="https://twitter.com/LydianChord" rel="nofollow noopener">LydianChord</a>&nbsp;and&nbsp;<a href="https://twitter.com/nomnomnami" target="_blank" rel="nofollow noopener">NomnomNami</a></li></ul>
<p>* translations *<br>Español -&nbsp;Fay<br>Français -&nbsp;mapledinosaur<br>Português -&nbsp;MOON-XP<br>Русский -&nbsp;Project Gardares<br>українська -&nbsp;Ron_Dallas<br>한국어 -&nbsp;<a href="https://twitter.com/KyleHeren" target="_blank" rel="nofollow noopener">KyleHeren</a><br></p>
<p><a href="https://www.redbubble.com/people/nomnomnamiart/works/27310627-comfort-illi?asc=u&amp;grid_pos=4&amp;p=t-shirt&amp;rbs=0285c0c3-cfb0-4900-925e-9e5e46137f36&amp;ref=artist_shop_grid&amp;style=womens" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzc4MTcwNi5wbmc=/original/cXZiGJ.png" alt="you could be wearing this shirt! IT COULD BE YOU!!!" title="you could be wearing this shirt! IT COULD BE YOU!!!" loading="lazy"></a><br></p>
<p><u>UPDATES</u></p>
<ul><li>1/22/2020 - uploaded portuguese translation (updated 2/12)</li><li>10/23/2018 - uploaded russian translation</li><li>9/7/2017 - uploaded french translation</li><li>4/10/2017 - uploaded ukrainian translation</li><li>9/21/2016 - uploaded spanish translation</li><li>8/3/2016 - uploaded korean translation (updated 3/21/17)</li><li>7/25/2016 - fixed "ghost illi" glitch</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIxLnBuZw==/original/IXVEJk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIwLnBuZw==/original/hzyZT9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUxLnBuZw==/original/C3D%2FOy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUyLnBuZw==/original/tKMXyT.png]]


<p><em>KANABO</em> is a rules-light pen-and-paper fantasy role-playing game set loosely in Tokugawa-era Japan&nbsp;(1600–1868) and based on iconic sword-fighting genre movies set in that time period, with cultural consulting by James Mendez Hodes (@LulaVampiro).&nbsp;This is a digital-only (for now) pair of zines.</p>
<p class="text-center"><strong>At $1000 USD, the game will be fully funded for a print run!</strong><em></em></p>
<h3>Within the 21-page Player's Handbook, you'll find:</h3>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both</li><li>A lightweight, easy-to-run d100 system with four stats</li><li>A randomized character system that provides compelling starting points for your adventurer</li><li>Hirelings, tools, clothes, provisions, and weapons to set you on your journey</li><li>Fully bookmarked for quick reference!</li></ul>
<h3>Within the 23-page Chronicler's Handbook, you'll find:</h3>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both<br>
</li><li>Tools for new and veteran GMs alike</li><li>Weather and encounter tables</li><li>A concise NPC list</li><li>A series of tables to generate your next&nbsp;<em>KANABO</em> hexcrawl</li><li>Factions, adventure sites, and magical &amp; mysterious discoveries</li><li>Fully bookmarked for quick reference!<br>
</li></ul>
<h3>What $1000 USD pays for:</h3>
<ul><li>A&nbsp;print run of both the Player's Handbook and Chronicler's Handbook, through Mixam ($400 USD)</li><li>The cost of hiring a cultural consultant ($240)</li><li>Paying myself ($360, which is $0.07/word)</li></ul>
<h3>Potential stretch goals:</h3>
<ul><li>$1660: Paying myself more ($660 brings my pay to $0.20/word)</li><li>$2000: A print run of Book 3: Bestiary (in development)</li></ul>
<p>Based on&nbsp;Christina Stone-Bush's&nbsp;<a href="https://hyvemynd.itch.io/brighthammer">Brighthammer</a>&nbsp;and John Geary's&nbsp;<a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a>,&nbsp;<em>KANABO&nbsp;</em>is an independent work compatible with Sledgehammer and Brighhammer&nbsp;but not affiliated with Gayhalforc or&nbsp;HyveMynd.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzU0NTU3NjkucG5n/original/wAoLqA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzU0NTU3NzAucG5n/original/%2FqjDtF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzU0NTU3NzMucG5n/original/l4Pv2P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzU0NTU3NzIucG5n/original/75zPO0.png]]
<blockquote><span></span></blockquote>
<h1 class="text-center"><em>BATALA IS DEAD, AND THE HOLY TRINITY HAS KILLED THEM. IN THE END OF THE UNIVERSE, WILL THEY SING OF YOU? MAKE. GOD. BLEED.</em></h1>
<p><strong>Karanduun</strong> is a <strong>modern Filipino Epic RPG about worthless heroes dismantling God, whatever cycle of oppression that must be</strong><strong></strong>.&nbsp; Inspired by modern Filipino folklore and culture.&nbsp;You play as young heroes who must make their legend known and become a legendary Karanduun by making God (whichever oppressive system and tyrant that is) bleed.</p>
<p>This game requires 4 - 6 players, with one player as the Alamat Chanter, the term for Game Master. This game only uses six-sided dice for everything. You're going to need around 6 in the beginning. By the end, you'll need around 20.</p>
<h2>Karanduun are those that are as fast as&nbsp;the lightning and as strong as the hurricane.&nbsp;</h2>
<p>Karanduun are those that, with a single command, fell entire armies and break the hearts of gods.&nbsp;But God is dead, and the Holy Trinity has killed Them. The Multiverse spirals into Kawalan, oblivion and entropy, due to the Hatred brought about by the forces of the Holy Trinity. Yes, there is no hope for this doomed world, but in its dying breath, the wake of the Karanduun,&nbsp;it might have been glorious.&nbsp;</p>
<p>Will you be remembered? You, lowly hero, of no name and consequence, so insignificant that not even Tadhana, destiny, has you etched upon its web, must rise and achieve that legendary sobriquet: Karanduun.</p>
<h2 class="text-center">SANSINUKOB AND ALAMATPUNK</h2>
<p><em><strong>Sansinukob is a setting inspired mainly by Filipino Myth and Folklore</strong>, </em>Modern&nbsp;Filipino Culture and Folklore. From provinces to the metropolis, all of them come from the experience of having lived in the Philippines.</p>
<p><strong><em>Wide Range of Settings. </em></strong>The world is vast and varied. Urban settings, especially within Biringan, the City-of-Cities, is closer to the aesthetic of post-American Philippines, just with electricity and cars replaced with magic spirits and giant boars.&nbsp;Outside of Biringan, one can find more fantastical settings and less urban fantasy settings.<br></p>
<p><strong><em>It is also inspired by&nbsp;"center-of-creation" settings</em> </strong>like <em>Planescape's Sigil, Kill 6 Billion Demons' Throne, and Roger Zelazny's Amber</em>. It is also inspired by post-apocalyptic, punk, and new weird&nbsp;settings like&nbsp;<em>Shin Megami Tensei Nocturne's</em><em>&nbsp;Vortex World</em>,&nbsp;<em>China Mieville's Bas-Lag</em><em>,&nbsp;</em>and the&nbsp;<em>Dying Earth genre of Fantasy&nbsp;</em>like&nbsp;<em>Gene Wolfe's Book of the New Sun, Jack Vance's Dying Earth,&nbsp;</em><em>Tanith Lee's Flat Earth,&nbsp;</em>and&nbsp;<em>Exalted's Creation.</em></p>
<p><strong><em>Sansinukob is the center of the multiverse, and is where the Neverending Ocean flows out from.</em>&nbsp;</strong> When BATALA was killed, the dregs of the multiverse seeped in from Neverending Ocean, where all universes can be found. Here the multiverse festers, toiling under the horrible violence that is the Holy Trinity.&nbsp;<br></p>
<p><em><strong>What is Alamatpunk?&nbsp;</strong></em>Alamatpunk is the plight and struggle of heroes rising in power, ascending the Angel's Ladder, overthrowing oppressors, and achieving their destinies. &nbsp;They are <em>Alamat, </em>meaning&nbsp;<em>legend&nbsp;</em>or&nbsp;<em>folklore&nbsp;</em>in Filipino, for the heroes and the settings are inspired by Filipino legends, traditions, folklore, and mythology.&nbsp;They are&nbsp;<em>Punk&nbsp;</em>because they are stories focusing on fighting back against an oppressive regime and an overwhelmingly powerful outside force with nothing but you, your friends, and your ideals and beliefs to power you.</p>
<h1 class="text-center">THE SYSTEM</h1>
<p><strong><em>An Easy to Learn Heroic System. </em></strong>The system only uses six-sided dice, and is meant to be easy to play, inspired by the <em>Exalted </em>1e Quickstart and PbtA design principles. One player takes on the roll of the&nbsp;<strong>Alamat Chanter,&nbsp;</strong>the one who describes and facilitates the game, while the players play as <strong>Worthless Heroes&nbsp;&nbsp;</strong>who yet have no names and legends and must etch their being into the world to change it.&nbsp;In this way, the Alamat Chanter sings the legends that these no names&nbsp;build for themselves.</p>
<p>The system is uses&nbsp;<strong>Acts,&nbsp;</strong>narrative systems that trigger when a Player narrates their hero in a specific way, and&nbsp;<strong>Responses, </strong>moves&nbsp;that the Alamat Chanter&nbsp;can use to make the PC's lives weirder, stranger, and harder to&nbsp;help facilitate a savage&nbsp;narrative that all the players create.&nbsp;</p>
<p>The Alamat Chanter does not roll, only the players do. They will roll a dice pool of d6s equal to the sum of two of their Traits. Every 4, 5, and 6 counts as a Hit, and every 1, 2, and 3 is considered a Miss. The AC determines the Difficulty of an action, assigning a Threat Number. If the number of Hits is below the TN, the action fails. If the number of Hits is equal to the TN, the action is a partial success. If the number of Hits is greater than the TN, the action is a full success.</p>
<p><strong>QUICKSTART SCENARIO:&nbsp;The Temple-Body of Aring Sinukuan.&nbsp;</strong>The Temple-Body of a War and Mountain Spirit has been defiled, turned into a devils pit for engkanto and Fallen druggies. Raid it and cleanse it of its head... and then fight your way out.</p>
<p>This is the 1st published edition of the 1st Edition!&nbsp;Please feel free to rate the game and drop reviews! They help amazingly.</p>
<p><em>FURTHERMORE: If you're from the Philippines and can't afford the PDF, just contact my Twitter and I'll send a PDF your way. Kapit-bisig, kababayan!</em></p>
<p><strong>For all the lorehounds and fic lovers out there:&nbsp;</strong>Karanduun has an official web serial! Check out&nbsp;<strong><a href="https://torendheavenandearth.tumblr.com/" target="_blank" rel="nofollow noopener">To Rend Heaven and Earth!</a></strong></p>
<p><strong><a href="https://docs.google.com/spreadsheets/d/1vOsWDeHradPPFtEGH-ridkZ4rEQltsM2LTLE4nKW3TY/edit?usp=sharing" target="_blank" rel="nofollow noopener">Karanduun Character Keeper</a>:&nbsp;</strong>If you want a Character Keeper for your online games! Make a copy!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMzEucG5n/original/Phpwvi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMjQucG5n/original/8XIlBt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMjUucG5n/original/SsFBxF.png]]
<p>The four of you tell each other everything.</p>
<p>That is, you do when there's anything to tell, because if something happens to one of you, there's a good chance the others were there, too. You've been inseparable for as long as any of you can remember. But now you're growing up, and that's about to change.</p>
<p>Two of you have a Purpose to search for, something that can't be found in the small town you all come from. Two of you have a Responsibility, something that you need to do here. You'll write letters to your now-distant friends to find out how your characters will change, how your relationships will evolve, and if you'll grow apart or closer with distance.</p>
<p>Keep in Touch is a four-player GM-less game about childhood friends living apart from each other for the first time. It's told through alternating in-person sessions and written letters. It was written for the <a href="https://itch.io/jam/correspondence-jam/">Correspondence Jam</a>.<br></p>
<p>If the cost of this game is a hardship for you, please grab a Community Copy from the pool below. More copies will be added to the Community Copy pool for every purchase of the game made. If you'd like to support the game without spending money, a rating or a comment helps others find it!<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTM1ODAzLzI3ODYxNTgucG5n/original/8DVPmh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM1ODAzLzI3ODU4NzYucG5n/original/at1zis.png]]
<p><em>CW: Body Horror, Dysmorphia</em></p>
<p>Keep It Together is a game about your body. Your body is ghastly and rotting. It makes others hate and fear you, and even try to kill you. It changes without your permission, forever, until like Theseus’ ship you are a whole different thing from what you were. It fails you when it matters most.<br></p>
<p>Keep It Together is a game about your body. Your body is resilient. It is changeable, and you can make it your own with effort. It lets you express yourself when words fail. It is yours, and you don’t need anyone else’s permission for it. Don’t forget this.</p>
<p>Don’t forget this.</p>
<p>---</p>
<p>Easy, light system. 4 pages.</p>
<p>Requires one six-sided die&nbsp;and one eight-sided die,&nbsp;or a random number generator.</p>
<p>Download below, install directly in brain.</p>

[img width=500 [https://img.itch.zone/aW1nLzMwMDAxMTYucG5n/original/SC2Y97.png]]

<p>Keris &amp; The Dream is&nbsp;a GM-less TTRPG for one&nbsp;(5 - 15 minutes)</p>
<p>Martial arts in the Malay community continue to be deeply rooted in mysticism, despite the Muslim-washing attempts by the government and religious heads. The keris, especially, has purportedly many magical uses outside of being a mere weapon and I intend to explore these stories with you.</p>
<p>I grew up on books like Siri Bercakap Dengan Setan and Harimau Jadian which unfortunately are quite a rare find these days and have been a huge influence to the writing of this game.</p>
<p>I hope you enjoy it.</p>
<p><strong>What you need to play:</strong><br></p>
<ul><li>imagination</li><li>a soft drawing implement<br>(crayon, ink, paint, etc.)</li></ul>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzMwNzMyODcuanBn/original/XSUTWo.jpg]]
<p><em><em><strong><em>This game is still under development, but if you got it in a bundle you will have access to the full version when it comes out.</em><br><br></strong></em></em><strong></strong>You are a small frog with a really big tongue, and you somehow got caught up in an even bigger mess.</p>
<p>Stick your slimy tongue to fling yourself through danger, and save the day in this adventurous and challenging frog-based 2D platformer!</p>
<p><strong>- Features - </strong></p>
<ul><li>Stick to surfaces, pull levers and boulders, and do more with your tongue!</li><li>Levels designed to be explored and challenged</li><li>Boss fights against mythical creatures!</li><li>A bunch of tasty flies ready to be eaten!</li></ul>
<p><strong>- Planned stuff! -</strong></p>
<ul><li>More regions each with a unique look, mechanics and bosses</li><li>Extra challenging levels</li><li>Stop immeasurable evil from taking over!</li><li>Texto em Português Brasileiro</li></ul>
<p><strong>- In development by -</strong></p>
<p>Game Design, Code: <a href="https://twitter.com/brukerotan" target="_blank" rel="nofollow noopener">@brukerotan</a><br></p>
<p>In-game and Cutscene Art: <a href="https://twitter.com/saoricih" target="_blank" rel="nofollow noopener">@SaoriCih</a></p>
<p>Game Design: <a href="https://twitter.com/jurtheshrimp" target="_blank" rel="nofollow noopener">@jurtheshrimp</a><br></p>
<p>Music: <a href="https://soundcloud.com/ivokaimusic" target="_blank" rel="nofollow noopener">Ivo Kai</a><br></p>
<p>Banner Art: <a href="https://www.instagram.com/renanstar/" target="_blank" rel="nofollow noopener">@RenanStar</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/uwH2cg5LPQA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjUucG5n/original/v2TrkK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzAucG5n/original/aHLLv5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzIucG5n/original/P6yB8A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjYucG5n/original/Wdkezi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjgucG5n/original/D0XhAA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjcucG5n/original/oWdFim.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjkucG5n/original/qUC%2B25.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI3ODUucG5n/original/oW8BO%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzEucG5n/original/BQMcoN.png]]
<p>It's a fine day on the infinite orchard, and you've been chosen to control the fruit picking robot.</p>
<p>&nbsp;The fruit being grown this millennia is the lesser-spotted bananorange, a beautifully sweet fruit that has an earthy aftertaste.</p>

[img width=500 [https://img.itch.zone/aW1nLzQ3NjE3MzcucG5n/original/ZFapV9.png]]
<p>Battle the invading Ananke Armada in this twin-stick shooter where you can slow time to get the advantage over your enemies. Blast your way to a high-score before the ever-present timer reaches zero.</p><hr><p>Shoot enemies, collect shards. When you collect enough shards an arrow will appear to point to a time extension pick up. Are you good enough to keep the fight going?</p><hr><p><strong><em>Controls (KB&amp;M or gamepad):</em></strong></p><p style="margin-left: 20px">Left stick or W,A,S,D = move<br>Right-stick or mouse and LMB = aim and shoot<br>RMB or Right trigger on pad = slow time (energy allowing)</p><p style="margin-left: 20px">Esc or gamepad start button = pause</p><p>Gamepad is recommended!</p><hr><p>New for November 2016 - For £2.00 (or whatever that is in your local currency), get the game AND the source-code. Do with it what you wish. Steal parts, re-write parts, remix the entire game and re-release is... Whatever you want! As long as you don't just replace my name with yours that is :)</p><p>I WANT TO HEAR FROM YOU! Follow me on Twitter - <a href="http://www.twitter.com/MrTom" target="_blank" rel="nofollow noopener">@MrTom</a>. Do you like the game? Did you hate it? Did you see anything break? Is your face getting hot and itchy? Let me know!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/znuBTuCns7E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAyLnBuZw==/original/hY7mfL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA0LnBuZw==/original/baFoTx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA2LnBuZw==/original/VyX8%2B2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAzLnBuZw==/original/uVsa08.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA1LnBuZw==/original/hQDC%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAxLnBuZw==/original/oPqaHn.png]]
<p>A game to play when you're on a walk~&nbsp;<br><br>This is a one-player game where you'll tell the story of an adventurer as you kick a rock. The traits of your rock will help define your adventurer and their journey. Where your rock lands will prompt you to describe the journey.&nbsp;</p>
<p>Start and pause Kick Rocks! at your leisure, your journey is always ready when you are.<br> Feel free to play this with friends, whether the two (or more) of you play it together or play during moments of companionable silence.&nbsp;<br><br>This game made for the <a href="https://itch.io/jam/pleasurecardrpg" target="_blank">Pleasure-not-Business Card RPG Jam</a><br><br></p>
<p><strong>Credits</strong><br>Thomas Novosel<br>Twitter:&nbsp;<a href="https://twitter.com/thomasanovosel" target="_blank" rel="nofollow noopener">@thomasanovosel</a>&nbsp;|&nbsp;<a href="https://t.co/KctTslgaFW?amp=1" dir="ltr" target="_blank" class="" rel="nofollow noopener"><span class=""></span></a><a href="https://thomasnovosel.itch.io" target="_blank">https://thomasnovosel.itch.io</a><br>Title font - Fight 1<br>Body font - Markerino 1<br><br><strong>Special thanks to~<br><br></strong>Kevin Thien Vu Long Nguyen<br>Twitter:&nbsp;<a href="https://twitter.com/Knit_Nack" target="_blank" style="font-size: inherit" rel="nofollow noopener">@Knit_Nack</a> |&nbsp;<a href="https://nguyenconditions.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener">https://nguyenconditions.com/</a></p>
<p>Viditya Voleti<br>Twitter:&nbsp;<a href="https://twitter.com/vidityavoleti?s=20" target="_blank" rel="nofollow noopener">@VidityaVoleti</a>&nbsp;|&nbsp;<a href="https://vidityavoleti.itch.io/" target="_blank">https://vidityavoleti.itch.io/</a></p>
<p>Simon Moody<br>Twitter:&nbsp;<a href="https://twitter.com/LuchaLibris?s=20" target="_blank" rel="nofollow noopener">@LuchaLibris</a>&nbsp;| <a href="https://colorspraygames.itch.io/" target="_blank">https://colorspraygames.itch.io/</a><br><br>Nevyn Holmes<br>Twitter:&nbsp;<a href="https://twitter.com/ForkTwenty" target="_blank" rel="nofollow noopener">@ForkTwenty</a> |&nbsp;<a href="https://www.nevyn.games/" target="_blank" class="" rel="nofollow noopener">https://www.nevyn.games/</a></p>
<p>Korben Dennis<br>Twitter:&nbsp;<a href="https://twitter.com/KorbenDennis" target="_blank" rel="nofollow noopener">@KorbenDennis</a> |&nbsp;<a href="https://www.korbendennis.com/" rel="nofollow noopener">https://www.korbendennis.com/</a><br><br>Alex Guerrero<br>Twitter:&nbsp;<a href="https://twitter.com/AFractalDragon" target="_blank" rel="nofollow noopener">@AFractalDragon</a> |&nbsp;<a href="https://fractaldragon.itch.io/" target="_blank">https://fractaldragon.itch.io/</a><br><br>J.R. Zambrano<br>Twitter:&nbsp;<a href="https://twitter.com/jrrmungandr" target="_blank" rel="nofollow noopener">@jrrmungandr</a> |&nbsp;<a href="https://www.belloflostsouls.net/author/jayarr" target="_blank" class="" rel="nofollow noopener">https://www.belloflostsouls.net/author/jayarr</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3MDM3LzU1NTQyOTEucG5n/original/DttfW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3MDM3LzU1NTQyOTIucG5n/original/5aIaUP.png]]
<p>Aster has been bringing&nbsp;Cordie on wilderness canoe camping trips all summer. Magic is afoot in the woods during their nightly campfire, but talk keeps returning to real life looming on the horizon.<br></p>
<p>Features: Campfire ambience, fear of unknown, forest spirits, loons.&nbsp;</p>
<p><em>Language: English</em><strong><img src="https://img.itch.zone/aW1nLzUwNTc0MzUucG5n/original/sg43X8.png" loading="lazy">K</strong><strong>INDLING SPIRITS</strong> is my first video game. It's&nbsp;a simple visual novel with several dialogue choices, one ending, and about 10-15 minutes of gameplay.&nbsp;</p>
<p>The game is free to play! If you choose to pay $2 or more, you can support me as a creator and&nbsp;get a digital art book PDF containing the art from the game, concepts and production notes.&nbsp;<br></p>
<p>I love making games, and I'm excited to develop the much larger sequel to <strong>KINDLING SPIRITS</strong>&nbsp;- coming soon-ish.&nbsp;</p>
<p>If you enjoyed this game, please consider supporting my continued game dev work on <a href="https://ko-fi.com/alliemackie" rel="nofollow noopener">Ko-fi</a><span></span> or <a href="https://www.patreon.com/alliemackie" rel="nofollow noopener">Patreon</a><span></span>!&nbsp;<img src="https://img.itch.zone/aW1nLzUwNTc0MzQucG5n/original/jp9jNh.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><strong>CREDITS<br></strong>Story, Coding &amp; Art:&nbsp;<a href="https://alliemackie.itch.io/" target="_blank" style="font-size: inherit">Allie<br></a>Music and SFX:&nbsp;<a href="https://pocket-se.info/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Pocket Sound</a> &amp; <a href="https://orangefreesounds.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener">orangefreesounds</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/RuzVGNTSIDo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjEuanBn/original/ktNCCw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjIuanBn/original/ZnC4F4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjMuanBn/original/NpY7jq.jpg]]
<p>This 2-player LARP&nbsp;is about kissing and being queer and resisting fascism. Love cannot always conquer all, but it is better to be with the people you love than to let them win. PUNCH NAZIS</p>
<p><br></p>
<p>Use enthusiastic consent when playing this game, and make sure to look out for your own emotions and the emotions of other players.</p>

[img width=500 [https://img.itch.zone/aW1nLzIwNjM5MjAucG5n/original/HE4lEY.png]]
<p>Knight &amp; Damsel is a two-player "uncooperative" multiplayer game set on a papercraft stage that subverts the age-old tale of knights saving damsels, with the knight and damsel competing to rescue the other!<br><br>In Knight &amp; Damsel, players attempt to delay their opponent so their chosen hero can receive the most glory by getting the furthest through the stage. They do this by throwing blocks on to their opponents screen, warping the fourth wall between 2D screen and world space. Blocks have the ability to delay or knock back their opponent, with snow avalanches to pursuing ghosts at hand to ensure you can get the lead in the race.<br><br>Compete as Knight and Damsel across four stages in the campaign mode, or simply kick back and enjoy the full selection of blocks via the arcade mode. Knight &amp; Damsel offers a competitive twist on the Damsel in Distress trope, fun for all ages.<span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/LEIOEv-oopc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgxLnBuZw==/original/PeDHia.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgyLnBuZw==/original/7WyU70.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgzLnBuZw==/original/vivHMS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTg0LnBuZw==/original/YE%2FeTa.png]]
<p><strong>Meteor launching team building arcade action!</strong><br>Clear the roads and defend the citizens of a magical torus for as long as you can.</p>
<ul><li>Time meteor launches for maximum impact and high scoring chains.</li><li>Deal with ten different enemy types that fly, bounce, teleport, and use magic.</li><li>Travel to peaceful towns, noble keeps and desert temples, all in a convenient loop.</li><li>Spend gold to hire allies and upgrade guards.</li><li>Let your allies head off to adventure! Pick them up on the next loop and they'll grow in power.</li><li>Dynamic music that changes with party size and danger level.</li><li>Clicktastic single button gameplay.&nbsp;</li><li>Dunk on your potato friends with real live Leaderboards, powered by Dreamlo</li></ul>
<p>Created in 48 hours for Ludum Dare 47.&nbsp;DocJekyll and I decided to team up this time around, though we only had 48 hours to do the work. We are submitting this to the Jam but used the Compo time constraints, please take note of our courage and valor.<br></p>
<p>The idea was riffing off of Missile Command, an arcade classic. Enemies approach, you fire shots with a travel time and a lasting damage zone, trying to scoop up as many targets as you can in one hit. Things get hectic before too long, with your team filling up with pirates, archers, and axemens, all trying to clear out an array of ever more mobile and clever enemies.</p>
<p>Letting enemies pass you will eventually bring you defeat. Waves are trips between towns, and if you begin a wave having let too many enemies pass you in the wave prior, you are in a sudden death mode where only a handful of misses can end the game. If you make it through, some of the pressure is off, so keep at it.</p>
<p>Sometimes your hired allies will ask to leave the party and go on a quest. If you manage to make it through a whole loop and return to where you left them, they'll rejoin you with vastly improved power. Or, you could just sacrifice one of them at the blood altar in case you're doing really poorly and need to take some heat off.&nbsp;</p>
<p>Every note of music was from Doc's laboratory. He actually wrote ten layered tracks that blend in and out as the party size changes, towns are visited, and the danger level increases.</p>
<p>Some of the art is derived from Oryx's excellent Tiny Fantasy set. Very little was used as-is: we animated, modified, and built all new content out of the base. However, Oryx's work was absolutely a springboard for us and so we've recused ourselves from the Graphics category.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyNDIuZ2lm/original/asPUu1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjQucG5n/original/hIOAF3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjcuZ2lm/original/Uvy71n.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjUucG5n/original/2NL0tT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjYucG5n/original/3DwDmJ.png]]

<p><em><strong>La Mancha </strong></em><strong>is a storytelling card game for 3-5 players based on Miguel de Cervantes' literary classic, </strong><em><strong>Don Quixote! </strong><br></em><br></p>
<p>Players take turns revealing the steps of an epic journey: everything from angry innkeepers to virtuous love interests. To overcome each challenge, players use Chivalry cards in their hand (based on books that Don Quixote read in the novel) to tell stories of their deeds, with the best storyteller winning strength-enhancing Treasure cards. Players can then use these Treasures to perform great Feats such as slaying fearsome giants (or are they windmills?) and dueling their rivals. The player who has performed the most Feats by the end of the game is the winner!</p>
<p>THIS IS THE PRINT-AND-PLAY EDITION! Physical copies are also available at: <a href="https://www.pfbstudios.com/product/la-mancha-physical-game/" rel="nofollow noopener">https://www.pfbstudios.com/product/la-mancha-physical-game/</a><br></p>
<p><strong>Features</strong></p>
<ul><li>Live the adventures of the famous Don Quixote de La Mancha in over 30 scenarios based on the classic novel!</li><li>Compose your own knigtly tales with 90 powerful Chivalric phrases.</li><li>Woo one of 16 loves, each with special abilities!</li><li>Wield 50 mighty treasures: weapons, armor, helmets, shields, and steeds.</li><li>Win the game and become the most renowned knight in the land by overcoming 16 dastardly feats!</li></ul>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lTwz_eN_w1c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0NDUwLzM1ODM0MzkuanBn/original/ol0YPl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0NDUwLzM1ODM0NTYucG5n/original/gZVTFB.png]]

<h2>Landlord of the Woods</h2>
<p><br>you're 25.</p>
<p>you feel like all of your peers are ahead of you in life.</p>
<p>you apply for a new job to try to find some sort of meaning. your new career is filled with physics-based puzzles, hand drawn art &amp; a tender little story.</p>
<p>make a soup, do science and organize pointless things.</p>
<p><br>Landlord of the Woods&nbsp;is a cute lil point &amp; click game that takes about an hour to play through.<br>my name is madison karrh and I made this little game - i absolutely adore that you would play something a stranger made.</p>
<figure><br><img src="https://img.itch.zone/aW1nLzU0NDc1NDcuZ2lm/original/KpTnGj.gif" loading="lazy"></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0eV1qdHfzy0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjIuanBn/original/j%2ByEJd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjAuanBn/original/VlD2j%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTkuanBn/original/hOJ8in.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTUuanBn/original/t%2F873%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTQuanBn/original/tpJix0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjEuanBn/original/Uu12jq.jpg]]
<p>Just your basic pong game but with lasers and power ups and explosions and stuff like that. Play against the computer, or against another local human. <br></p>
<p><br>Just added a beta of a 1.1 update to the downloads. Feel free to try it out. More info on this version <a href="https://tracfacsam.itch.io/laserpaddles/devlog/261857/laser-paddles-v11-update-beta-available">can be seen here</a>.<br></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Lb8ovW5D20k" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODMucG5n/original/OTmj1F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODQucG5n/original/O7QsYB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODUucG5n/original/o9owZ%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODYucG5n/original/Tk3O3%2B.png]]
<p> 
      Last Knight is over-the-top non-stop jousting action in a beautiful brutal fantasy world! 
        It comes with bucketloads of content and is inspired by outstanding third-person platformers like Crash Bandicoot. 
        It uses the Unreal Engine to bring it all to live... </p>
<p><strong>Key Features:</strong>  	            
              </p>
<ul>
<li><strong>OVER-THE-TOP JOUSTING!</strong> -
 Countless enemies had been shot, hacked and slashed in the history of 
games. Now it is time to ram a wooden lance in some gut, send your foes 
flying, and watch them bite the dust! Body parts ripping off, ragdoll 
horse physics, and destructive environments included. </li></ul>
<ul><li><strong>A BEAUTIFUL BRUTAL WORLD</strong> –
 Dive into a magical fantasy world full of treasures and adventures! 
Don't be fooled by the cartoony looks: here, simply bumping into a silly
 wooden fence spells a sudden end to your hero's life. If you fancy 
dying in a more heroic way, how about getting swallowed by a giant toad,
 falling into a lava pit, exploding from eating too much turkey, getting
 impaled by a Hitler Snowman, or just getting lit on fire by a dragon! </li></ul>
<ul><li><strong>BUCKETLOADS OF CONTENT</strong> –
 Divided into three major parts - the Story Mode, the Endless Journey 
Mode and the Rogue Rider Mode - this game has a lot to offer and there 
is always something new to accomplish, find, or unlock. Power-ups, 
characters, view modes, mutators, quests, game mode variations, randomly
 generated hats, you name it! Did you ever wish to be a skeleton king 
with a fancy wig riding over rainbows on a flower-pooping pink unicorn? 
It's all up to you in this game! </li></ul>
<ul><li><strong>INSPIRED BY CRASH BANDICOOT</strong> –
 Good third-person platformers were always hard to find on PC, when 
consoles sport countless shining examples: the first Crash Bandicoot 
titles, Spyro, Ratchet &amp; Clank, and Super Mario were all a big 
inspiration for Last Knight. This game kicks it up a notch with non-stop
 jousting action, no-health instant death, procedurally-generated 
worlds, as well as custom-crafted levels with Knightmare levels 
in-between. To top it off, the new Rogue Rider Mode pushes it all into a
 rogue-like direction, and if you don't like third-person view, try 
playing in first-person mode! </li></ul><p>Follow Toco Games on Twitter: <a href="https://twitter.com/TocoGamescom" rel="nofollow noopener">https://twitter.com/TocoGamescom</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pQhBR_X7YbA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwNzkucG5n/original/ItbqkI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODAucG5n/original/tJue1L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODEucG5n/original/0bExCd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODIucG5n/original/p2ilBU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODMucG5n/original/7kpRj3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2NzkzLnBuZw==/original/SJPm9u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk0LnBuZw==/original/UhkkFU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk1LnBuZw==/original/gLewsN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk2LnBuZw==/original/BuyBuq.png]]
<p class="text-center"><em>The Cursed Earth is a sparse, dry, and warped place.<br>Distorted by the dread wars of old.<br>The Skirmishes that followed.<br>And the Road Wars of the present.<br><br>The Knights of the Circle use to protect people.</em></p>
<p class="text-center"><em>They rode into battle against the forces of darkness in super-charged V8s<br></em><em>They spared no expense when rendering aid<br>Gave out bullets and food to them that needed which<br>They slew monsters with magic sword in hand<br><br>Their king, Arthur Victorious swore them to service.<br>Their rolling fortress, Turbo-Camelot, defended the weak.<br>Sword Priests, Gun Saints, &amp; Drag Demons...<br>They all fought&nbsp;for us.<br><br>Everyone said they were now gone to Ol'Avalon...<br><br>But Fuck That Noise!<br>Pick up the sword, load your six shooter, and grab your fucking keys partner.<br>You're the Last Knights On Earth and&nbsp;<span class="">Myrddin&nbsp;</span>has one last quest for you.</em></p>
<p class="text-center">***<span></span></p>
<p class="text-center">Last Knights On Earth is a pulp adventure micro RPG.&nbsp;<br>It's about Knights, Cowboys, and Furious Drivers, all on a mission from god.<br>Partially based&nbsp;on&nbsp;<em>Big Mutherfuckin’ Crab Truckers</em>.<br>Last Knights On Earth tells fast stories.</p>
<p class="text-center">***</p>
<p class="text-center">Included in your purchase are 2 versions&nbsp;of the game.<br>Version 1 has the original text and is formated for PDF readers.<br>Version 4 (replaces version 3) has revised text, mechanics, and is a zine format.<br>***<br>Thank you to <em>The Coalition of Friendship&nbsp;</em>and&nbsp;<em>Fenced Forest,&nbsp;</em>for listening to me.<br>Inspired by Sturgill Simpson's Visual Album - SOUND &amp; FURY<br><br>***<br>Buying this work above it's asking price will unlock more community copies for those facing financial hardship.<br><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTEucG5n/original/DnHrsK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NzkucG5n/original/HOM6ly.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTAucG5n/original/k8MqYR.png]]
<p>Two pilots can change your destiny. Two massive war machines can change your future. Two players can share the happiness.</p>
<p>Last Shooting is a 2-player RPG that uses a unique system to tell stories about Mech battles. Using a customized version of the Final Bid engine, Last Shooting builds the characters and defines them more sharply during each scene of play. Then, it gives you the power to destroy any of those aspects to propel yourself to victory.</p>
<p>Last Shooting is meant for single session play, and tends to take 2-3 hours. And it provides the flexibility for no two sessions to play out the same way.</p>
<p>Define your pilot, and destroy them in turn. The battle hinges on what remains.</p>
<p><br></p>
<p>Spreadsheet template version of the DATAFILE, byJulianne Hardstone:&nbsp;<a href="https://tinyurl.com/LastShootingGoogledoc" rel="nofollow noopener">https://tinyurl.com/LastShootingGoogledoc</a></p>
<p>Cover by Simon Sweetman&nbsp;<a href="https://sisweetman.artstation.com/" style="font-size: inherit" rel="nofollow noopener">https://sisweetman.artstation.com/<br></a>Layout and Editing by Jacob Randolph&nbsp;<a href="https://liberigothica.itch.io/" style="font-size: inherit">https://liberigothica.itch.io/</a></p>
<p>Last Shooting is licensed under the Creative Commons Attribution-Share-A-like<br>4.0 International License<br><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode" rel="nofollow noopener">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a><br>Last Shooting uses and adapts material from Final Bid by Jacob Randolph<br>(also licensed under CC BY-SA 4.0)</p>
<p><br></p>
<p><strong>Podcast Appearances</strong></p>
<ul><li><strong><a href="https://www.sixfeatsunder.com/bonus-feats/lastshooting" rel="nofollow noopener">Six Feats Under</a></strong></li><li><u><strong><a href="https://anchor.fm/one-shot-test-kitchen/episodes/Episode-10-1---Last-Shooting-Gameplay-empo2m" target="_blank" rel="nofollow noopener">One Shot Test Kitchen</a></strong></u></li></ul>

[img width=500 [https://img.itch.zone/aW1nLzM1NTQxNTYuanBn/original/rJWwjG.jpg]]
<p><strong>* Part 1 files are free&nbsp;- look for the 'demo' files at the end of this page. *</strong></p>
<p><strong>*Want a&nbsp;physical tape copy you can hug? Buy one <a href="https://www.bitmapsoft.co.uk/product/last-train-to-tranz-central/" target="_blank" rel="nofollow noopener">here</a>&nbsp;from Bitmapsoft!*</strong></p>
<p><strong>Welcome to Last Train to&nbsp;Tranz-Central, a&nbsp;two-part run 'n' gun adventure for the beloved&nbsp;&nbsp;ZX Spectrum!&nbsp;:D</strong></p>
<p><strong><br></strong></p>
<p><strong>Part I: All aboard the Space Train!</strong><br></p>
<p>In the Wild West frontier of the future, Space Trains race across the stars, piloted by powerful next-gen Artificial Intelligence (A.I.) with a whopping 48k of memory each.</p>
<p>I know!</p>
<p>Tech this advanced always goes wrong (right?). Following a hook up with incompatible peripherals at a remote space (train) station, the A.I.s have become corrupted and sent several Space Trains on a crash course with populated planets!</p>
<p>It’s up to Maurice, The Space Cowboy, to reach the rogue A.I. in each train’s engine room before the outposts become a crater the size of Nebraska…</p>
<p>Each train is now the last train… unless you succeed!</p>
<p><br></p>
<p><strong>Part II: The return of the Space Cowboy</strong></p>
<p>Tranz-Central is saved! But small splinters of code have infected four more trains, heading towards brand new targets.</p>
<p>New and old enemies are on board to stop anyone interfering.</p>
<p>But the Space Cowboy has returned, leaping from train to train, striving to put right what might go&nbsp;&nbsp;wrong.</p>
<p>Hoping each time that the next train will be the train home…</p>
<p><a href="https://planetasinclair.blogspot.com/2020/08/last-train-to-tranz-central.html" target="_blank" rel="nofollow noopener">PlanetaSinclair gave a score of 8/10</a> for this game!&nbsp;Thanks!&nbsp;:D</p>
<p><a href="https://youtu.be/-fFIxMzT3QM?t=1262" target="_blank" rel="nofollow noopener">The Spectrum Show</a> said: "It's quite a nice game, this. Very enjoyable."</p>
<p>\o/</p>
<p>FEATURES:</p>
<p>* A two-part Run 'n' Gun game for the ZX Spectrum</p>
<p>* 64 levels in total across 8 unique Space Trains&nbsp;(each part has 32 levels, spread across 4 trains)</p>
<p>* 8 Rogue AI bosses to defeat or escape from.</p>
<p>* 128k versions feature cosmic music by Yerzmyey<br></p>
<p>* Multiple enemies - some you can shoot, some you can't, all will kill you /o\</p>
<p>* Keys: QAOP and Space - can be redefined</p>
<p>* Kempston Joystick Support</p>
<p>* Each part has its own loading screen/presentation/music</p>
<p>* Colour clash! \o/</p>
<p>* Made with Multi-Platform Arcade Game Designer (MPAGD) by Jonathan Cauldwell</p>
<p>* Possible port to other systems thanks to being made with MPAGD</p>
<p>* From the Sheep that made<a href="https://quantumsheep.itch.io/jumpin-jupiter" target="_blank">Jumpin' Jupiter</a> :)</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/N8nPnacc7is" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjEucG5n/original/clnj5Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NzIucG5n/original/BcgcCN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjQucG5n/original/XxdmmF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjIucG5n/original/NEe6k6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjgucG5n/original/MvPW9e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjYucG5n/original/f%2BZ3ot.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjUucG5n/original/vKmHTb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjkucG5n/original/%2Bm6Mm3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjMucG5n/original/X3ViUu.png]]
<p>Dive into a new and unexpected take on golf games! In <strong>Lava Golf</strong> you do not control the golfer, instead <strong>you are the golf ball </strong>and your objective is to reach the end portal of each course without falling into the lava.</p>
<p>Armed with <strong>unexpected skills</strong> for a golf ball, like the ability to dash into the air or to hit the brakes to avoid falling off a platform, you will need to cross all the portal rings of a course to unlock its exit portal. Scattered across the course you'll also find precious experience spheres which will let you<strong> gain levels</strong> and grant <strong>skill points</strong> allowing you to <strong>unlock new incredible abilities</strong> and to enhance your existing ones!</p>
<p>Unlock unique skills, cross all the rings, and most importantly...&nbsp;<strong>DO NOT FALL INTO THE LAVA!</strong></p>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNTYucG5n/original/9%2BxXKZ.png" loading="lazy"></p>
<p><strong>The controls are simple</strong></p>
<p>Use your mouse to look around and pick a direction (or use your Left Stick if playing with a gamepad!)<br></p>
<p><strong>Space</strong> to perform an Air Dash and push yourself in the direction the camera is facing<br></p>
<p><strong>Left Ctrl</strong> to perform an Air Brake, to stop yourself so you can land somewhere safe</p>
<p><strong>Space</strong> can also be used to perform a Ground Dash, to avoid falling in the lava or to snatch some experience spheres</p>
<p><strong>E/R/D/F</strong> to use the powerful unlockable abilities like Time Freeze, Emergency Jump and others...<br></p>
<p><strong>Backspace</strong> to PAUSE the game<br><br><strong>ESC</strong> to go back to the main menu<br><br>Detailed info on how to play can be found in the "HOW TO PLAY" screen, which includes an helpful video tutorial!<br></p>
<p><em><img src="https://img.itch.zone/aW1nLzYwNDEzNTgucG5n/original/9raC7o.png" loading="lazy"></em></p>
<p>This game is the first work of <strong>Hexagonal Experiences Inc.</strong> a two person indie dev team. A collaborative effort between me as a Coder/Game Designer and my good friend <strong>Atb4sh </strong>as an Artist/Level&nbsp;Designer.&nbsp;<br></p>
<p>Music: <a href="https://incompetech.filmmusic.io/song/5741-gothamlicious" target="_blank" rel="nofollow noopener">Gothamlicious</a>, <a href="https://incompetech.filmmusic.io/song/5048-stay-the-course" target="_blank" rel="nofollow noopener">Stay The Course</a> and&nbsp;<a href="https://incompetech.filmmusic.io/song/4277-retrofuture-clean" target="_blank" rel="nofollow noopener">RetroFuture Clean</a> by Kevin MacLeod.<br>License: <a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener">http://creativecommons.org/licenses/by/4.0/</a></p>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNjAucG5n/original/hi%2Bz7t.png" loading="lazy"><br></p>
<p><strong>Tips and Tricks</strong><br></p>
<ul><li>Try to pay attention to the camera overview when starting a new level. While it won't necessarily show you the way, knowledge of the map layout is very important to win!</li><li>Skills that allow you to try again a level are very important, especially when you try a level for the first time.</li><li>Plan your upgrades in advance. Having the right skill or the right powerup will definitely help down the road!</li><li>When first starting out, try not to go too much off the beaten path to get X Spheres. Some are really hard to get!</li><li>You can watch a video tutorial inside the game or <a href="https://twitter.com/GolfLava/status/1387329308696449024" target="_blank" rel="nofollow noopener">on our Twitter account</a> and in the How to Play screen in game!</li></ul>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNjIucG5n/original/QPtN2T.png" loading="lazy"><br></p>
<p><strong>Install instructions</strong><br></p>
<ol><li>Download the installer</li><li>Double click on the installer</li><li>Enjoy the game, you'll find it in your Start Menu and in your Desktop!</li></ol>
<p><em><img src="https://img.itch.zone/aW1nLzYwNDEzNjQucG5n/original/DkuM8D.png" loading="lazy"></em><em></em></p>
<p><strong>Giving Feedback</strong></p>
<p>Please, let us know what you think either posting comments in here, or reaching us via Lava Golf's <a href="https://twitter.com/GolfLava" target="_blank" rel="nofollow noopener">Twitter account</a></p>Have fun!<br>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4W2vSAgpPUw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDAucG5n/original/Pu3YvT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzcucG5n/original/oWHah%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDMucG5n/original/Q6kdBr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzkucG5n/original/3D%2F%2BzO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDIucG5n/original/r1qcTL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzgucG5n/original/9cwRQJ.png]]
<p>
	<em><strong>LAZA KNITEZ!!</strong></em> is a fast-paced jousting deathmatch game for up to 4 players. Teleport to the neon-lit ALL CAPS technofuture and challenge your friends to mind-blowing hypercombat. Fire your laser-lance from a distance, get up close and personal to empale your foes and use 7 different power-ups to your tactical advantage.</p><p><a href="https://kotaku.com/after-being-98-off-for-5-years-this-indie-game-is-goi-1839102909" rel="nofollow noopener">Read about why the game is 100$&nbsp;in this article</a></p>
<p>
	<a href="https://joon.be/glitchnap/press/LAZA_KNITEZ/images/b-intro.gif" data-image_lightbox="true" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM2MDg1MzQuZ2lm/original/jIm09U.gif" loading="lazy"></a></p>
<figure><a href="https://joon.be/glitchnap/press/LAZA_KNITEZ/images/b-intro.gif" data-image_lightbox="true" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM2MDg1MzYuZ2lm/original/v2q4tR.gif" loading="lazy"></a></figure>
<p><strong>CREDITS</strong></p>
<ul><li>Design &amp; Development: <a href="http://www.glitchnap.com" style="background-color: initial" rel="nofollow noopener">Glitchnap</a></li><li>Art: <a href="http://dominikjohann.de/" style="background-color: initial" rel="nofollow noopener">Dominik Johann</a></li><li>Sound: <a href="http://salkinitzor.bandcamp.com/" style="background-color: initial" rel="nofollow noopener">Niklas Ström</a></li><li>Additional help by Nifflas, YAC, HaxeFlixel</li></ul>
<p><a href="http://salkinitzor.bandcamp.com/" rel="nofollow noopener"></a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zOUFKyK1aMA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzEucG5n/original/2gdahl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzIucG5n/original/Tqbla3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzMucG5n/original/zembZD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzQucG5n/original/pvYOF8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzUucG5n/original/jyMZAj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzYucG5n/original/cvSMAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzczODMucG5n/original/BYRbud.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzczODYucG5n/original/fbKhV8.png]]

<p>The complete 3 disk OST to Learn Japanese To Survive: Kanji Combat!</p><p>Follow me!<br>SoundCloud:&nbsp;<a href="https://soundcloud.com/alecshea" rel="nofollow noopener">https://soundcloud.com/alecshea<br></a>BandCamp: <a href="https://alecshea.bandcamp.com/" rel="nofollow noopener">https://alecshea.bandcamp.com/</a><br>Twitter:&nbsp;<a href="https://gate.sc/?url=http%3A%2F%2Ftwitter.com%2FSlaleky&amp;token=34ef52-1-1592041901391" target="_blank" title="http://twitter.com/Slaleky" rel="nofollow noopener">twitter.com/Slaleky</a><br>Facebook:&nbsp;<a href="https://gate.sc/?url=http%3A%2F%2Fwww.facebook.com%2Falecsheamusic&amp;token=e51283-1-1592041901392" target="_blank" title="http://www.facebook.com/alecsheamusic" rel="nofollow noopener">www.facebook.com/alecsheamusic<br></a></p>

[img width=500 [https://img.itch.zone/aW1nLzM1MDc5NDcuanBn/original/12bM%2FO.jpg]]
<p>Hey! This is a small thing I wrote for a jam, and it had a lot of personal stuff in it, but somehow I think it might make someone feel seen. I hope so. In this zine, I talk about my experience with PMDD (Pre-Menstrual Dysphoric Disorder), self-image, identity and, of course, punk music.</p>
<p class="text-center"><strong>Content warnings are as follows:</strong></p>
<p class="text-center"><strong>Discussion of medical trauma, depression, mental health, mood swings, and treatment of AFAB people in medical settings.</strong></p>
<p class="text-center"><strong>I advise caution if these topics trigger you, but I think nothing here goes beyond what is touched upon in Riot Grrrl lyrics and discussions.&nbsp;</strong></p>
<p>I would like to say that if you are a person that has PMDD and feels alone, or powerless, 1- you are not alone and 2- take some time to rest, you are doing a great job. PMDD sucks, I know, but there will people to support you when things get tough.</p>
<p>This zine, like my previous one, was made using the wonderful <a href="https://alienmelon.itch.io/electric-zine-maker" target="_blank">Electric Zine Maker</a> by <a href="https://alienmelon.itch.io" target="_blank">alienmelon</a>! Thanks!</p>

[img width=500 [https://img.itch.zone/aW1nLzQ2NjAyNjUuanBn/original/%2BqBPoZ.jpg]]
<p><em><strong>Legend of Hand </strong>tells the story of a hero on an epic quest to find the mythical Grandmaster Hand, the one man who can restore peace to a troubled world. Inspired by adventure classics, Far-East legends and martial arts beat 'em up games of the 80's and 90's, this point and click adventure will take the player on a unique journey through magical lands.</em><br><br><strong>The Story<br></strong>Your masters have put their trust in you to find the mythical Grandmaster Hand, an enigmatic figure who disappeared many years ago. He is the one man capable of stopping the gathering unrest that is threatening your world. To find Hand you will need to travel through four mysterious islands, finding clues and challenging their infamous masters - the so-called Fingers of Hand! The masters are experts in martial arts and finding them will be not always be easy.<br><br>Your quest will take you on an epic adventure across unique islands and weird worlds where you will meet amazing friends and terrifying foes. So many distractions await but do not forget your aim - find Grandmaster Hand to save your world and its inhabitants!<br><br><em>Can you reunite a troubled world? Can you find the elusive Grandmaster Hand? Your destiny awaits...</em></p>
<p><strong>Features<br></strong>- An epic quest spanning many wonderful lands. Expect 10+ hours of game-play!<br>- An impressive cast of intriguing, bizarre, amusing and lovable characters. Expect to meet companions who will aid and follow you in your adventures!<br>- Traditional point and click adventure game elements such as puzzles, inventory system and dialogue interactions.&nbsp;<br>- Unique hand drawn graphics and animations.<br>- A turn-based RPG style fighting system that is easy to learn and fun to play. Learn new combat moves, increase your HP and fight enemies.&nbsp;<br>- Mini games galore!<br>- Animated cut scenes.<br>- Original soundtrack reflecting the atmosphere of the special worlds visited by the hero.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/RIh9QqIcSBs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwNi5qcGc=/original/hFX%2BAh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwNy5qcGc=/original/OZ1Kei.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwOC5qcGc=/original/oRPXRG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwOS5qcGc=/original/bbw%2By6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMC5qcGc=/original/Qzx30z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMS5qcGc=/original/aZYolZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMi5qcGc=/original/G9A9fh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMy5qcGc=/original/%2BSSH3E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNS5qcGc=/original/rKOZFz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNi5qcGc=/original/s5oXHN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNy5qcGc=/original/szh80e.jpg]]
<p>A short visual novel made in around a month for Cryptid Jam.</p>
<p>Guide the skeptical Charlie through a night in her local woods, helping her cute friend Mia search for the infamous Mothman (or, possibly, the less-infamous Owlman. Mia insists that the difference is academic).&nbsp;</p>
<ul><li>Get lost in the woods</li><li>Choose if Charlie flirtatiously teases her&nbsp;crush or not</li><li>Change whether this game should even have "Mothman" in the title</li><li>Wonder why Mia would even think about looking for Owlman <em>here</em>. I mean this is<strong> literally</strong> just behind her house, <em>someone</em> would have noticed</li><li>Watch as Charlie&nbsp;holds hands with a girl whilst also being a girl</li><li>Discover why Mia&nbsp;<em>really</em> came to these woods</li></ul>
<p><br></p>
<p>This game is intended to be suitable for all audiences, but contains mild threat, anxiety,&nbsp;and also they say "Oh My God" four times. Please leave any glitches or typos that you notice in the comments.</p>
<p><br></p>
<p>Game created in Ren'py (<a href="https://www.renpy.org/" rel="nofollow noopener">https://www.renpy.org/</a>)</p>
<p>Designed, Written, and Produced by Zoe Lillith A. (Twitter: @EldritchZoe, Portfolio: https://zoelillitha.wordpress.com/)</p>
<p>Art and Character Design by Perse Brenn (Instagram: onesp1cyboi)</p>
<p>Background Photography by Sam Angl (Twitter: @samangl_)</p>
<p>Music by Alice Exley (Twitter: @Alice_blackmage) <br>Soundtrack:&nbsp;<a href="https://blackmage.bandcamp.com/album/lesbian-mothman-hunters?fbclid=IwAR0j1U6D8pWA0j8eL3X4kNhMKJdUz6Q_0gCUkhB20PR4KT-Faa8PX_ypB-Q" rel="nofollow noopener">https://blackmage.bandcamp.com/album/lesbian-mothman-hunters?fbclid=IwAR0j1U6D8pWA0j8eL3X4kNhMKJdUz6Q_0gCUkhB20PR4KT-Faa8PX_ypB-Q</a></p>
<p>Assets used under Creative Commons Attribution licence: \"snowy owl.mp3\" by soundmary (modified, <a href="https://freesound.org/people/soundmary/sounds/194945/" rel="nofollow noopener">https://freesound.org/people/soundmary/sounds/194945/</a> ),&nbsp;"Heart sound.wav" by DaniraMO5 (modified,&nbsp;<a href="https://freesound.org/people/Daniramo5/sounds/469249/" rel="nofollow noopener">https://freesound.org/people/Daniramo5/sounds/469249/</a> )&nbsp;Licence available at <a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">https://creativecommons.org/licenses/by/3.0/</a></p>
<p>All assets used in this game are the intellectual property of their creators.</p>
<p>Version 1.0 is left available as I felt it was more in the spirit of a game jam project. Most players will want to use the latest version.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1ODQuanBn/original/vYxkAo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDAwNDcucG5n/original/lboujF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NjkucG5n/original/lI99uC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NzEucG5n/original/B1FaZj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NzIucG5n/original/SciKpB.png]]
<h1>Let Me Take a Selfie</h1><p>Let Me Take A Selfie&nbsp;is a collection of games using selfies to tell stories and explore emotions alone and with others. Selfies are a way we present ourselves to the world as we want to be seen. LMTAS explores relationships, crises, and fiction.</p>
<p>All games require phones with cameras and text messaging.<br></p>
<p><strong>Who Made Me Smile?</strong> is a four player game where players write stories and share selfies to connect and understand each others' emotions. <br></p>
<p><strong>The Story of My Face</strong> is a single player horror game where you tell your own story and create your own monsters while recording your adventure. <br></p>
<p><strong>Now You Don't</strong> is a multiplayer, GMless game where one player is the target of the experience and many others join them in a party that would be much less interesting if the one player wasn't invisible. <br></p>
<p><strong>Don't Look at Me</strong> is a two-player game where players are a couple separated by long distance, one who is ill and one who is in danger, who must weather the obstacles before them with limited time to communicate. <br></p>
<p><strong>Literally, I Can't</strong> is an exercise in competence where players must respond to small crises during a big crisis by demonstrating their competence in selfies and getting the job done.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NTguanBn/original/XZi7dq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDUuanBn/original/EhFm5E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDguanBn/original/QEMghx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDQuanBn/original/WJj30W.jpg]]

<p>Drifting the outer rims of the postal pocket dimension,&nbsp;a lone mailbox gently rusts as it’s ravaged by the slow unstoppable passage of time.</p>
<p>Festering within the dark confines of the tin contraption, a small cluster of creased unopened letters; their addresses faded into a peculiar mangled patchwork of damp ink splotches.</p>
<p>The senders but a bygone memory, blissfully unaware of the undelivered words that remain stagnant gathering dust in perpetuum.</p>
<p></p>
<p><br></p>
<p>Tamper with these postal relics trapped in stasis at your own discretion, one knows not of the void’s mailman.</p>
<p><br></p>
<p>Controls:<br>Mouse</p>
<p><br></p>
<p>
</p>
<p>Return Address:</p>
<p>Mayfield Container</p>
<p>Jumpton Road</p>
<p>Scareville</p>
<p>Wales</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjA0LzUxOTM3NDIuZ2lm/original/1dZJHs.gif]]
<p>
	<iframe width="560" height="310" src="https://www.youtube.com/embed/D9HdhyPPWQU" frameborder="0" allowfullscreen=""></iframe>
</p>
<p>
	My grandmother is probably the most important person ever to me, as she provided me with the stability and care a child needs growing up. We all have or have had people helping us become a responsible and caring person, and this short narrative game is an ode to these people.</p>
<h1>Controls</h1>
<h2>Controllers</h2>
<ul><li>Left joystick to move</li><li>Right joystick to rotate the camera</li><li>Any trigger to run</li><li>Any face button to interact</li></ul>
<p>Most common controllers should work with the game.</p>
<h2>Keyboard/mouse</h2>
<ul>
	<li>move with WASD, ZQSD, or arrow keys</li>
	<li>Shift to run</li>
	<li>rotate camera with the mouse</li>
	<li>left click, spacebar, return to interact</li></ul>
<p>
	<br>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/D9HdhyPPWQU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA2LnBuZw==/original/zfR3je.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA4LnBuZw==/original/a67inY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA5LnBuZw==/original/M4oQma.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTEwLnBuZw==/original/mM8uDY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA3LnBuZw==/original/5WxEhX.png]]
<p>Six fowl backgrounds to add to your wacky adventures in spheres, space, and beyond.&nbsp;</p>
<p>Choose or roll from a variety of chickens, from the&nbsp;enigmatic<strong> Shapeshifting Chicken of the Night</strong>, the proud <strong>Ascendant Fighting Cock</strong>, to the powerful <strong>Awakened Fried Chicken</strong>. And three more backgrounds that are just as bizarre.&nbsp;</p>
<p>They are all fun and balanced, whatever that means for you.&nbsp;</p>
<p>UPDATE: Want a sneak peek of one the backgrounds? Check my blog to see the&nbsp;<a href="https://halfminotaurfarmer.blogspot.com/2020/02/troika-background-shapeshifting-chicken.html?m=1" rel="nofollow noopener">whole background stats of Shapeshifting Chicken of the Night</a>!<br><br></p>
<p><span class=""><strong>LIFE OF THE POULTRY </strong></span><span class="">is an independent production by John Erwin Casia and is not affiliated with the Melsonian Arts Council.</span> </p>
<p>A submission for <a href="https://itch.io/jam/chicken-jam">ChickenJam</a><span></span>.&nbsp;<br></p>
<p>UPDATE: Uploaded tarot card-sized version of the game, as a submission for <a href="https://itch.io/jam/troika-tarot-jam">Troika Tarot Jam</a>.&nbsp;</p>
<p>Each paid copy beyond the minimum price&nbsp;will create a community copy, refreshed every week. So for every $3 you buy beyond the minimum price, another person gets a copy for free! That way you'll have people to talk about and play the backgrounds with!</p>
<p></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMzkxMTgucG5n/original/4V9OES.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjkucG5n/original/MjNmxI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjgucG5n/original/l72Tj2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjcucG5n/original/WgmIUj.png]]

<p>Veil sensors have located a source of significant interference on the planet below. Strong likelihood of Ruin, Windswept, and Surge presence, but initial forays indicate sizeable dimensional disturbances as well. A Spire, standing at the coast, seems to be the source of these distortions. Get to the Spire, take readings, and then get back safely, Beacons!</p>
<p><br></p>
<p>LIGHT: Trek to the Spire combines a strike format with an overworld exploration zone that features several feuding factions while also introducing a brand new enemy type: the geometrically-perfect and cosmically-horrible Numinitous!</p>
<p>Trek to the Spire also offers three new gear tags and three new Legendary weapons.</p>
<p>Furthermore, mutant fungi have corrupted the woods near the Spire and the spores seem to feed on both Light and Dark. There might be further fungal developments as they assimilate the nearby flora and fauna.</p>
<p>Finally, place your own strikes onto the map to keep the Light shining! Plan a foray to the heart of the Cube! What lies beyond the Hypercube's portals? And what will befall the mutated Windswept feeding on mushrooms in place of Aether?</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2NDM2LnBuZw==/original/5iTQPv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzcxLnBuZw==/original/Ov2CTS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzcyLnBuZw==/original/%2BsfqXG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzczLnBuZw==/original/0HwnK%2F.png]]
<p>Control a small drone and use it to&nbsp;wreak havoc. Shoot your way through the horde of orbs, watch them break apart with each hit, and rack up the highest score you can!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODcuanBn/original/7UmW%2Fk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDIuanBn/original/bd5B0i.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTIuanBn/original/p3T%2FpL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTQuanBn/original/%2Bf19AZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODguanBn/original/tcYcd1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTkuanBn/original/jimL7N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDAuanBn/original/obf3ZK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTYuanBn/original/xqzpJ7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTcuanBn/original/AxyRnG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTUuanBn/original/d9yf1j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTMuanBn/original/x7odWL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTguanBn/original/EXlAVe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTEuanBn/original/3J7rlu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTAuanBn/original/W88fSG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDEuanBn/original/AH0ohV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODkuanBn/original/Z7vGLY.jpg]]
<p><em>"There's unrest in the forest..."<br></em>Explore a lake amidst turmoil, at the brink of war between fairies and frogs.<br>Lilypad lake has turned upside down since the Goliath frogs invasion. Fairies were dethroned and stripped out of their royal power.&nbsp;<br>The Crows watched silently as Bat power grew and the Bug clans found strenght in unification.&nbsp;<br></p>
<p>Lilypad lake is an adventure site written for the #RittermarchJAM&nbsp; and it contains the following:</p>
<ul><li>5 different factions with goals and resources</li><li>5 different locations around and in Lilypad lake&nbsp;</li><li>A few dungeons and a ton of point of interest within the locations</li><li>NPCs of major factions</li><li>Stats for the creatures&nbsp;</li></ul>
<p>"Lilypad lake" is an independent production by Frigging Frogs and is not affiliated with Losing Games.<br>It is published under the Mausritter Third Party Licence. Mausritter is copyright Losing Games.<br>I made it for the&nbsp;<a href="https://itch.io/jam/rittermarch" target="_blank">''Rittermarch Jam [#MoreMausritterMarch]"</a>&nbsp; using Affinity publisher and Photoshop for image editting. </p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU3MDc2MzEuanBn/original/Udqyt8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ4NTAucG5n/original/Q9q8oP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ3OTQuanBn/original/tbRWhU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ3OTUuanBn/original/5r0ux7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ4MDUuanBn/original/Ldd8RD.jpg]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/C5-ovaLHAsM" allowfullscreen="" frameborder="0"></iframe></div>
<figure><em><em><em><em><img src="https://img.itch.zone/aW1nLzM4ODc2NzYucG5n/original/MOySJI.png" loading="lazy"></em></em></em></em><br></figure>
<p></p>
<p>Master bouncing 2 spaces at a time through 7 challenging chapters, restore power to every tile and bring the <em>ARCANE</em> system back online.<br>In Limiter! even the world map is an obstacle course to hop your way through.</p>
<p><img src="https://img.itch.zone/aW1nLzM4ODc2MzkucG5n/original/iFtzBi.png" loading="lazy"></p>
<p></p>
<p>Play as <em>Limiter</em>, an AI programmed to see the world in puzzles.<br>The player and the character blend together in a truly unique narrative experience about learning and what makes us who we are.<br>Explore a long forgotten computer network called <em>ARCANE</em> and bring the lights back on.</p>
<p><em>Restore power to the system.</em><br><em>Find harder puzzles.</em><br><em>Feel better.</em></p>
<p><img src="https://img.itch.zone/aW1nLzM4ODc3NTMucG5n/original/AhBIFy.png" loading="lazy"><br></p><p>Features an incredible original soundtrack by the talented Lukepi. Plug in some headphones and watch the trailer for a preview!<br></p>
<p><strong>Soundtrack Available Now!!<br></strong></p>
<p><strong><a href="https://lukepi.bandcamp.com/album/limiter-official-soundtrack" target="_blank" rel="nofollow noopener">Check it out here!<br></a></strong><img src="https://img.itch.zone/aW1nLzM4ODc3NTQucG5n/original/eyPeNW.png" loading="lazy"></p>
<p>Create your own levels! Every world you complete in the story unlocks more level parts to be used until the only limit is your own imagination!<br>Easily create, test and share as many levels as you can think of using the same tools as the developer!</p>
<p><br></p>
<p><strong>This game is also available on Steam featuring gamepad support as well as achievements. Check that out <a href="https://store.steampowered.com/app/1340870/Limiter/" target="_blank" rel="nofollow noopener">Here!</a></strong><br></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/C5-ovaLHAsM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDQuZ2lm/original/RXDuZa.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDUuZ2lm/original/wHcoua.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDcuZ2lm/original/6n3ryS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM1MTg3NzQucG5n/original/XGWRMX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDYuZ2lm/original/Lopvju.gif]]
<p><strong><img loading="lazy"><img src="https://img.itch.zone/aW1nLzU2MDgzMzQucG5n/original/rjYEa1.png" loading="lazy"><br></strong></p>
<p><br></p>
<p><strong>Lineage has been updated! &nbsp;Now includes rules for Monarch's spouses and events that cause kingdoms to decline and fall.<br></strong></p>
<p><strong>Now available in both digital and physical formats!<br></strong><br></p>
<p><strong>What is Lineage?</strong><br></p>
<p>Lineage is a solo roleplaying game where you will chart the lives of monarchs and the history of the nation they rule.&nbsp; <br></p>
<p>Build the family tree of a fictional royal family.&nbsp; Record the challenges they faced and the decisions they made, and discover how those decisions impacted future generations<strong>.</strong></p>
<p>A journaling game with a difference, you will learn the complete history of a fictional kingdom as you uncover&nbsp;the&nbsp;lives of&nbsp;its&nbsp;leaders, gradually building an elaborate historical artefact.<br></p>
<p><strong><br></strong><strong><br></strong><br></p>
<p><strong>How to play<br></strong></p>
<p>Rolling 2 six-sided dice, you'll be provided with short descriptions of a monarch - how they are remembered, the heirs they left behind, the challenges they faced and how they&nbsp;died.&nbsp; <br></p>
<p>Using these as prompts, you will gradually build a complete history of this ruling family and the nation they control.</p><p>
</p><p><br></p>
<p><br></p>
<p><strong> Can I incorporate this into an RPG session?<br></strong></p>
<p>You can. &nbsp;Lineage is a stand-alone journaling game, but can also be used to build randomised rulers on the fly.&nbsp; <br></p>
<p><br></p>
<p><strong>Downloads are great, but...</strong><br></p>
<p>A limited number of physical copies of Lineage are available. &nbsp; These are A5 sized, 28 page booklets.<br></p>
<p><br></p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU4NDMzMDIuanBn/original/JqlQWk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU4NDMzMDEuanBn/original/JH%2FGB%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgyNzkucG5n/original/77txUF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU0Njc4OTYuanBn/original/TKOMYG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgzMDUucG5n/original/oCr69I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgzODIucG5n/original/ipZH6d.png]]
<p>LINEARITY: show me how you play and I will tell you who you are!<br></p>
<p>Linearity is a companion puzzle game: create lines, as many and as complex as you can. Just turn the blocks to make them connect until you have a line without any breaks.</p>
<p>3 game modes:<br>- 42 to You: you have 42 seconds to play, and will get a feedback based on your style of play.<br>- 0-100: all the time you want, but only 100 moves to create the best sequence of lines.&nbsp;<br>- Franticity: just a few seconds, but you get a little more time for each line you make. Better lines give you more extra time.<br></p>
<p>While you play you can enjoy some fantastic music: not a quick loop but a full song: Pointillistic by Bzur!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA4OTE0LzQ4NjU4NzkucG5n/original/C%2BDdwY.png]]
<<list-links "[tag[Linux]sort[title]]">>
<p>Congratulations, warehouse keeper! You've been promoted!<br><br>Little Square Things is a&nbsp;<strong>COMPLETELY FREE</strong>&nbsp;(if you couldn't tell) Sokoban-like puzzle game. The objective is simple: Move boxes around to cover up some panels.<br><br>But this isn't your father's warehouse. In Little Square Things, you&nbsp;<em>are</em>&nbsp;the boxes.&nbsp;<em>All</em>&nbsp;of them. All of the Square Things respond to your every move, and so it's up to you keep them coordinated, in sync, and in line. Guide them through a series of challenging (and hazardous!) environments to get those panels covered!<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/header1.png?t=1569543770" loading="lazy"><br><br>You want puzzles? You've got puzzles!<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;Think your way through&nbsp;<strong>111 unique puzzles</strong>! Plus, you can revisit them&nbsp;<strong>all</strong>&nbsp;for completely new challenges in each!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;From walls to water, from bullets to buzzsaws -- other elements either stand in your way. That, or they'll help you out. You'll have to figure that out!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;Navigate the geometry, with game boards that wrap around and null spaces that literally don't exist!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;Stop to take your moves turn-by-turn, or crank up the speed if you're in a hurry!<br><br>As a master shepherd of sheep and cats alike, you are the Square Things' beacon of hope in these complicated times.<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/header2.png?t=1569543770" loading="lazy"><br><br>Were you a 90s kid? Some other kind of kid? Are you a kid&nbsp;<strong>right now</strong>? Doesn't matter, because this game is for you!<br><br>Here's what you'll see, hear, and feel:<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;New! More Enhanced Graphics Adapter (EGA) and SoundBlaster support-ish!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;Gamepad.. err.. joystick support!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy">&nbsp;Modern quality-of-life improvements!<br><br>With its futuristic&nbsp;<strong>17</strong>-color graphics and&nbsp;<strong>enhanced&nbsp;</strong>Musical Instrument Digital Interface (MIDI), Little Square Things is going to&nbsp;<em>blow you away</em>.<br><br>So boot up your i386, tinker with your CONFIG.SYS, and crack your knuckles in preparation for that DOS prompt, because it's time to play a game! Also, it's 1991!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDQuanBn/original/moIzn3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDguanBn/original/6J8jFd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzkuanBn/original/dHCMzg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzIyMTI0NjUuanBn/original/SxyjrD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NTEuanBn/original/Hn1Z1x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDkuanBn/original/EYVEea.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzguanBn/original/SBwHmm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDMuanBn/original/GLtcjt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzcuanBn/original/hmPEen.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDEuanBn/original/MGmJcC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDIuanBn/original/hbscOU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDYuanBn/original/1RVMzt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NTAuanBn/original/FK%2FJPc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDAuanBn/original/pLaoqa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDcuanBn/original/KSjt8j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDUuanBn/original/zGw3L8.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzQxOTIucG5n/original/E%2FKIev.png" loading="lazy"></p>
<div class="custom-outer_box"><div class="custom-inner_box"><p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzgwMDQucG5n/original/cAqZha.png" loading="lazy"><br></p>
<p class="text-justify"><em>Armed with nothing but your curiosity, streaming equipment, and insatiable need to impress others, you approach a long-abandoned house in your small town.</em></p>
<p class="text-justify"><em>What could possibly go wrong?</em><br></p>
<h2 class="text-justify">LiveScream is a horror/comedy visual novel with point-and-click elements.</h2>
<p class="text-justify">Step into the role of an intrepid ghost hunter-slash-live streamer-slash-average high schooler and explore a haunted house with your adoring audience.</p>
<p class="text-justify">LiveScream is available for a minimum price of $2.99. 50% of all proceeds will be donated to <a href="https://www.acrossboundaries.ca/" rel="nofollow noopener">Across Boundaries</a>, a Toronto-based mental health centre that provides equitable, inclusive, and holistic mental health and addiction services for racialized communities.</p></div></div>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzQxOTMucG5n/original/2vDket.png" loading="lazy"></p>
<div class="custom-outer_box"><div class="custom-inner_box"><h2 class="text-center">Customisable Protagonist</h2><p class="text-center">Play as a character you identify with! Customise your name, screen name, pronouns, and appearance.</p>
<h2 class="text-center">Point-and-Click Exploration</h2>
<p class="text-center">Snoop to your heart’s content! Click on objects around the house to inspect them up close.</p>
<h2 class="text-center">Reactive Audience</h2>
<p class="text-center">Watch your stream chat react to your choices! Win them over with your ghost-hunting prowess, or disappoint them with your cowardice.</p>
<h2 class="text-center">Unlockable Achievements</h2>
<p class="text-center">Try to cross everything off your bucket list! With its short playthrough time of 20 minutes and multiple endings, LiveScream is an easily replayable game.</p></div></div>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjEuZ2lm/original/YQBYL4.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjMuZ2lm/original/VYylUB.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjQuZ2lm/original/npIv0f.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjYuZ2lm/original/arKP%2Bh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjguZ2lm/original/3h%2B5s8.gif]]
<p><span class=""><strong>Description</strong></span></p>
<p><span class=""></span></p>
<p><span class=""></span><span class=""></span><span class=""></span><span class="">When you live in a war zone and death is hunting everyone, things will look different and choices become harder. Face your fate in an&nbsp;unjust war to survive with your family from the shadows of war.&nbsp;</span></p>
<p><span class="">&nbsp;</span>Time is running against you, your family is in danger and there is nowhere to hide or to do but to get them out of the home through a hero journey to a safer place.&nbsp;</p>
<p><span class="">Shooting and bombing everywhere and it will hunt you unless you make fast decisions as you progress through different events. These events are real and they will make you choose the hard way. Live or die!</span></p>
<p>
</p>
<p><span class=""><strong>Features&nbsp;</strong></span></p>
<ul><li>A story based on Actual Events.<br>
</li><li>Witness the actual events of war from different&nbsp;point of view.<br>
</li><li>Emotional&nbsp;experience&nbsp;that will touch your heart.
</li><li>Provoke different feelings in a short space of time.<br>
</li><li><span class="">Explore amazing atmosphere.</span><br>
</li><li>Challenging decision,&nbsp;events and puzzles awaiting for you.
</li><li><span class="">Epic music and Sound effects.</span>
</li></ul>
<p><span class=""></span><span class=""></span></p>
<p>
</p>
<p><strong>Why i made this game&nbsp;</strong></p>
<p>I'm a father of two&nbsp;kids, I&nbsp;can't imagine my life without them, but in Palestine nobody is safe.</p>
<p>When the war started in Gaza and i saw the images of the killed kids in their parents hands&nbsp;I was shocked,&nbsp;I had a weird feeling,&nbsp;it's a combination of sadness, fear, empathy and anger, All what i was thinking of is&nbsp;"what if this happened to me".<br><br>I have chosen to share those feelings in a game to deliver a message of how we are living as Palestinians under this situation<br></p>
<p>It's Not Just a Game, It's&nbsp;a case and call for help.</p>
<p>
</p>
<p><span class=""><strong>Awards</strong></span></p>
<p><span class=""></span></p>
<p><span class=""></span>IMGA MENA -&nbsp;WINNER OF Excellence in Storytelling.<br>The Game Development World Championship 2016 - "GDWC" 3rd Place in Serious&nbsp;Catagory.<span class=""><br>Reboot Develop Indie Award in category of "Visual Excellence".<br>Nominations and Official Selections</span></p>
<p><span class="">Indie Prize: </span>Best in Show &amp; Most Innovative Game.</p>
<p>Indie Prize: Best Game Narrative.</p>
<p>AzPlay: Best Idea Finalist.<br>IndieCade Festivel: Official Selection.<br>IndieCade Europe: Official Selection.<br>PGC Vancouver - Big Indie Pitch: Official Selection.<br>A MAZE Johannesburg Exhibition: Official Selection.<br>A MAZE Berlin Exhibition: Rainbow Selection.<br>Casual Connect - Asia Showcase: Official Selection.<br>Game Happens: Official Selection.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OAXBBzxKqu8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ5LnBuZw==/original/Xre4Dz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ4LnBuZw==/original/aO6CVw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ3LnBuZw==/original/CVI6An.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExOTI1LnBuZw==/original/ZacQ96.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExOTI0LnBuZw==/original/Jlvn%2Fs.png]]
<p><strong>Loco Motive </strong>is a murder mystery-comedy, full of deadly surprises, larger than life characters and yes, the occasional blood fountain!<br></p>
<p>
</p>
<p><strong>Mr. Arthur Ackerman</strong> finds himself in the personal employ of <strong>Lady Unterwald</strong>, an eccentric heiress of the Wald-Bahn rail company.</p>
<p><strong>On the verge of a landmark speech</strong>, you've been summoned to make a last minute amendment to her Will - aboard her flagship luxury train, <strong>The Reuss Express</strong>.</p>
<p>Little does Arthur know, he's about to become embroiled in a <strong>murder, a mystery and worst of all... an adventure!</strong></p>
<p></p>
<p><em>"A lot of indie adventure games try to replicate the distinctive feel of classic LucasArts point-and-clickers</em><em>, but Loco Motive doesn't just pull this off; it absolutely nails it.."</em><br>- <a href="https://www.pcgamer.com/this-free-murder-mystery-absolutely-nails-the-feel-of-classic-lucasarts-adventures/?utm_medium=social&amp;utm_campaign=socialflow&amp;utm_source=twitter.com" target="_blank" rel="nofollow noopener"><em>PC Gamer</em></a></p>
<p></p>
<p><em>"The level of polish in Loco Motive is incredible – with fantastic pixel art animation, intuitive puzzles, a great sense of humor and well written dialogue..It feels a lot like someone’s unearthed a long lost Lucasarts classic.. Highly recommended."<br></em><em>-&nbsp;<a href="https://www.alphabetagamer.com/loco-motive-game-jam-build-download/" rel="nofollow noopener">Alpha Beta Gamer</a></em></p>
<h4><p><strong>Instructions</strong></p></h4>
<ul><li>Click ground to walk, and objects/characters to interact.</li><li>Move your mouse to the top of screen to open your inventory.</li><li>Equip items by clicking them. </li><li>Use an equipped item by clicking it on an object or character.</li><li>Combine items in your inventory by using one on the other.</li><li>Right Click, or Click empty space to unequip the current item.</li></ul>
<h4><p><strong>Made in 2 weeks for AdvXJam 2020, by:</strong></p></h4>
<ul><li>Adam Riches (<a href="https://twitter.com/Supernorn" target="_blank" rel="nofollow noopener">@Supernorn</a>) -  Story, Art, Sound</li><li>Joseph Riches (<a href="https://twitter.com/gamedevjoe" target="_blank" rel="nofollow noopener">@GameDevJoe</a>) - Story, Code</li><li>Paul Zimmermann (<a href="https://twitter.com/pzcomposer" target="_blank" rel="nofollow noopener">@</a><a href="https://twitter.com/paulzmmermann" rel="nofollow noopener">paulzmmermann</a>) - Music</li><li>'t3nshi'&nbsp; (<a href="https://twitter.com/_t3nshi" target="_blank" rel="nofollow noopener">@_t3nshi</a>) - Additional Art</li></ul>
<p>Created with <strong>PowerQuest </strong>for Unity. A 2d adventure game tool, made by <br>Dave Lloyd (<a href="https://twitter.com/duzzondrums" target="_blank" rel="nofollow noopener">@DuzzOnDrums</a>)
<a href="http://powerquest.powerhoof.com/" rel="nofollow noopener">https://powerhoof.itch.io/powerquest</a></p>
<p>Pixel Fonts by Chevy Ray&nbsp;<a href="https://chevyray.itch.io/pixel-fonts">https://chevyray.itch.io/pixel-fonts</a><br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE2MzkucG5n/original/NN6PgE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4ODMucG5n/original/Fr33jj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4MzcucG5n/original/8QZp7K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MzM4ODIucG5n/original/zGNxXf.png]]
<p>
	<iframe width="560" height="315" src="https://www.youtube.com/embed/5YSNMhoha08" frameborder="0" allowfullscreen="">
	</iframe>
</p>
<p><strong>Requires SteamVR headset for best experience</strong>.&nbsp;</p>
<p><strong><a href="https://store.steampowered.com/app/490250/Locomancer/" rel="nofollow noopener">Now Available for Free on Steam</a></strong><span style="color: inherit; font-size: inherit"></span></p>
<p>
	Are you a kid that wants to play with model trains?<br>
</p>
<p>
	Are you an adult that misses playing with your model trains as a kid?
</p>
<p>
	Are you an adult that missed out on playing with model trains as a kid?
</p>
<p>
	Are you an adult with a kid that wants to play with model trains?
</p>
<p>
	Are you just an adult that wants to play with model trains?
</p>
<p>
	Are you a person of any age/race/gender that wants to play with model trains?
</p>
<p>
	If you answered yes to any of the above, do I have news for you because Locomancer lets you PLAY WITH AND RIDE MODEL TRAINS!
</p>
<p>
	<em>(Also if you answered no to all of the above, come on, we all know you're lying to yourself and everyone you love. Take a break from the wave shooters and play with some trains.)</em>
</p>
<p>
	Locomancer is a toy box style model train simulator for touch enabled SteamVR headsets. It allows you to build layouts of varying complexity and even defy what is physically possible in fake virtual reality (reality).
</p>
<p>
	<strong>Featuring</strong>:
</p>
<ul>
	<li>Multiple locomotives including steam and diesel engines</li>
	<li>A variety of rail cars including a fully functional cannon car</li>
	<li>Straight track, curved track, inclined track, loop de loops, and more!</li>
	<li>Various pieces of scenery to add detail your layouts</li>
</ul>
<p>
	Plus, with support for custom scenery, you can bring models created by yourself or the community into the game for even further customization. The possibilities are nearly endless*!
</p>
<p>
	Fully embracing the physicality of touch enabled virtual reality you are legally required to build layouts piece by piece, tree by tree. Then, once complete you must remotely operate your trains with a replica DC control panel or hop in the cab of any of the available locomotives and drive them with physical levers, knobs, and dials! They even burst in to flames when they crash, you can't say that about your real model trains can you?
</p>
<p>
	Oh...you can? I'd get that checked out if I were you.
</p>
<p>
	So what are you waiting for? Become <strong>The Locomancer</strong>!
</p>
<p>
	Yes, you are the Locomancer. Was that not clear? It's like a train wizard. You're like the babe with the power, but instead of voodoo it's train magic. Also, there's no magic dance, but you can still dance to twenty-six minutes of sweet big band jazz by Nathan Boler if you want to.
</p>
<p>
	*The possibilities are totally endful, but there's still a lot you can do.
</p>
<p style="margin-left: 20px">
	<em>At first, I was like, "Meh, kind of cool concept, just needs a bit more development time." And then he went into first person mode, and I thought "I NEED THIS GAME RIGHT THE F*** NOW!" - Bennykill709</em>
</p>
<p style="margin-left: 20px">
	<em>Trainspotting without the heroin - Hyper Magazine</em>
</p>
<p>
	<iframe width="560" height="315" src="https://www.youtube.com/embed/APTOKf6d9jc" frameborder="0" allowfullscreen="">
	</iframe>
</p>
<p>
	<br>
</p>
<p>
	<iframe width="560" height="315" src="https://www.youtube.com/embed/62U2tN9H_S4" frameborder="0" allowfullscreen="">
	</iframe>
</p>
<p>
	<br>
</p>
<p>
	<a href="https://forums.tigsource.com/index.php?topic=55883.0" target="_blank" rel="nofollow noopener">
	See the devlog for development updates.</a>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/5YSNMhoha08" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE1LnBuZw==/original/RYdZ6D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc1LnBuZw==/original/XK9BTK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDcxLnBuZw==/original/nizzqu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDczLnBuZw==/original/Txym3O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDcyLnBuZw==/original/dKvAfH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc0LnBuZw==/original/7LZyTK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE0LnBuZw==/original/kW8Dgz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc3LnBuZw==/original/fUm2%2F7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE2LnBuZw==/original/SwLNSs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc2LnBuZw==/original/OHxtQt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE3LnBuZw==/original/vGsf4c.png]]
<p><strong></strong>"Something brilliant that I didn’t know I needed after over a year of pandemic life"-&nbsp;</p><p><a href="https://www.pcgamer.com/14-games-you-should-play-from-the-indie-bundle-for-palestinian-aid/" rel="nofollow noopener">Alexis Ong, PC Gamer</a></p><p><strong>Welcome to a bunch of chill 3D worlds full of unique study spots with Lofi Hip Hop music and ASMR sounds.&nbsp;</strong></p>
<p>You can explore them to relax while you take a break from studying.&nbsp;</p>
<p>When it's time to study again, you can set a timer and&nbsp;put these worlds in the background. To help you focus, they will continue to provide relaxing sounds and beats with no ads.&nbsp;</p>
<p>In these worlds, nothing is trying to hurt you.&nbsp; You don't need to fight anything to win.&nbsp; You set your own goals, and you can customize your own soundscape to help you meet them.&nbsp; &nbsp;</p>
<p>We are providing this version of the software on a pay-what-you can basis to support students and teachers engaged in remote learning during the pandemic.&nbsp; Some players have compared it to the "fidget toys" they have on their desks to provide sensory breaks during long work sessions.&nbsp;<span></span></p>
<p>---</p>
<p><strong>Credits</strong></p>
<p>This project&nbsp; was designed and developed by <a href="https://www.wizzardjones.com/" rel="nofollow noopener">Israel Jones</a> and <a href="https://rossier.usc.edu/faculty-and-research/phd-directories/phd-a-z/phd-profile/?id=109" rel="nofollow noopener">Matthew Hamilton</a><strong>,&nbsp;</strong>students at the University of Southern California's School of Cinematic Arts and Rossier School of Education.&nbsp; &nbsp;Sound design is by Kaley Markes at the Berklee School of Music.&nbsp; Music curation is by Israel Jones and&nbsp;Noah Brown from Berklee.&nbsp;&nbsp;</p>
<p>Our design is based on research about player experiences with mindfulness in&nbsp;<a href="https://www.waldengame.com/" rel="nofollow noopener">Walden, A Game</a> and the <a href="https://www.headspace.com/" rel="nofollow noopener">Headspace</a> app that will be presented at&nbsp;<a href="http://2021.hci.international/" rel="nofollow noopener">HCI International.</a></p>
<p>Special thanks to our professor Richard Lemarchand and our classmates in the Interactive Media and Games&nbsp;MFA&nbsp;class of 2022 cohort.&nbsp;&nbsp;</p>
<p>Thanks also to&nbsp;<a href="https://www.youtube.com/channel/UCyD59CI7beJDU493glZpxgA" rel="nofollow noopener">Lofi Geek</a>, who provided much of the game's music, and to <a href="https://www.linkedin.com/in/michael-d-clark-96780924" rel="nofollow noopener">Michael Clark</a> for providing songs written by him and his colleagues.&nbsp;&nbsp;A full list of music is included in the in-game credits, and the song title and artist pop up in the lower left corner as music plays.&nbsp;</p>
<p>---</p>
<p><strong>Contact us</strong></p>
<p>You can email us at&nbsp;<a href="mailto:LoFiHipHopWorlds@gmail.com" class="" target="_blank" rel="nofollow noopener">LoFiHipHopWorlds@gmail.com</a></p>
<p>---</p>
<p><strong>Tips and suggestions:&nbsp;</strong></p>
<ul><li>If you want to listen to different music while still hearing the soundscape of these worlds, just press "C" and go to the Customize Audio menu.&nbsp; You can turn down the music volume while keeping the effects volume at your desired level, and can open your own musical selection in a different window.&nbsp;&nbsp;</li><li>The software should be windowed, not fullscreen by default.&nbsp;&nbsp;If this is not the case on your computer, you can set it to windowed by pressing "C" and going to the Customize Graphics menu and checking the "windowed" checkbox.&nbsp; This might also fix bugs with buttons that show up on some older Macs.&nbsp;</li><li>To avoid eye strain, remember to stretch your eyes every 20 minutes by looking at something at least 20 feet away for at least 20 seconds.&nbsp; The software will remind you to stretch.&nbsp; You might also want to use your computer's settings to adjust the screen brightness.</li><li>If you are playing on an older computer and you experience a lag in the navigation controls,&nbsp;&nbsp;try pressing&nbsp;"C" to open&nbsp;the Customize Graphics menu, and then lower the resolution and graphics quality.&nbsp;&nbsp;</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qcTqQnPNZLY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTMucG5n/original/hxnOD5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTQucG5n/original/rc3TFV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTgucG5n/original/Co%2BHf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTUucG5n/original/LSlIs8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njk5OTUucG5n/original/0dqy4j.png]]
<h4 class="text-center"><br><br>Somewhere deep inside the magical forest forgotten<br>lies a hut, a potion shop!<br><br>~ ~ ~ ✿ ~&nbsp;~ ~</h4>
<h4 class="text-center"><em></em></h4>
<h4 class="text-center">The creatures of the lands near and far <br>come visit this tiny place<br>sharing their stories,  feelings,<br>thoughts on the mystery that's about to unravel...<br>And it's your job to pour 'em some potions!</h4>
<p><br><br><br><br><strong>FEATURES</strong><br><strong>✿&nbsp;</strong>2 h ~ playtime<br><strong>✿&nbsp;</strong>10 000 ~ words of potion shop chattin'<br><strong>✿&nbsp;</strong>many creatures to meet and even more potions to make<br><strong>✿&nbsp;</strong>freemode!</p>
<p><strong><br>Part of the <a href="https://itch.io/b/812/care-package-bundle" target="_blank"><em>Care Package Bundle!</em></a><br><br><a href="https://itch.io/b/812/care-package-bundle" target="_blank"><img src="https://img.itch.zone/aW1nLzUzOTAxNjUucG5n/original/elyKdC.png" alt="click to open!" title="click to open!" loading="lazy"></a><br></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/wFWpLNZwUo8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjczMTEuZ2lm/original/5r5VJp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjc2NDMuZ2lm/original/ZGuZG9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjc1MzYuZ2lm/original/dFW9%2BH.gif]]
<h3></h3>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/5muGeXdxKTs" frameborder="0" allowfullscreen=""></iframe></div>
<h3>Short Description</h3>
<p>
	Long Gone Days is a <strong>2D modern-day military RPG set in our current times</strong>, with a focus on language and cultural barriers, inspired by classic dystopian literature and visual novels.</p>
<p><img src="https://img.itch.zone/aW1nLzM2NDkzOTEuZ2lm/original/xQmlYS.gif" loading="lazy"><br></p>
<p><span></span></p>
<p>After being deployed to his first mission,&nbsp;<strong>Rourke</strong>&nbsp;leaves&nbsp;<strong>The Core</strong>'s base for the very first time, only to discover the dark truth about the operation he's part of and <strong>the consequences of deserting an inescapable war</strong>.</p>
<p>With no place to call home now, he must prevent the war from spreading any further, forming strong bonds along the way that will forever change his life.</p>
<p><img src="https://img.itch.zone/aW1nLzM2NDkzOTQuZ2lm/original/lgreo5.gif" loading="lazy"><br></p>
<ul><li><strong>Communication is Key:</strong>&nbsp;As Long Gone Days is set in the real world, you'll encounter several language barriers. Recruit interpreters in order to communicate with others.</li><li><strong>Keep Morale High:</strong>&nbsp;Choose dialogue options wisely as they impact your party members' Morale, affecting how they perform during battles. While doing so, keep in mind every character has different personality traits and motivations.</li><li><strong>Sniper Mode:</strong>&nbsp;Long Gone Days has two battle systems. Using Rourke's rifle, spot your enemies and take down your targets.</li><li><strong>No Random Encounters:</strong>&nbsp;Long Gone Days features front-view turn-based battles with body-targeting system, and every battle is directly related to the plot.</li></ul>
<h2>Frequently Asked Question</h2>
<p><strong>Q: Can I do a Let's Play/Review/Stream of the demo?</strong><br></p>
<p>
	A: Sure, we'd be honored.&nbsp;For reviews, you can also use the information/pictures from the <a href="http://longgonedays.com/press" target="_blank" rel="nofollow noopener">Press Kit</a>.</p>
<p>
	<strong>Read the entire FAQ <a href="http://longgonedays.com/faq" target="_blank" rel="nofollow noopener">here</a>.</strong>
</p>
<h2>Contact<br>
</h2>
<p>
	<strong>Inquiries</strong> - info@bura.cl
</p>
<p>
	<strong>FAQ </strong>- <a href="http://longgonedays.com/faq" target="_blank" rel="nofollow noopener">http://longgonedays.com/faq</a></p>
<p><strong>Web </strong>- <a href="http://www.longgonedays.com/" target="_blank" rel="nofollow noopener">longgonedays.com</a><span></span><br></p>
<p><strong>Discord</strong> - <a href="https://www.discord.gg/longgonedays" target="_blank" rel="nofollow noopener">discord.gg/longgonedays</a></p>
<p><strong>Twitter&nbsp;</strong>-&nbsp;<a href="http://twitter.com/lgdays" target="_blank" rel="nofollow noopener">twitter.com/lgdays</a><br></p>
<p><strong>Tumblr -</strong> <a href="http://lgdays.tumblr.com" rel="nofollow noopener">lgdays.tumblr.com</a></p>
<p>
	<strong>Facebook </strong>- 
	<a href="https://www.facebook.com/LongGoneDaysGame/" target="_blank" rel="nofollow noopener">facebook.com/longgonedaysgame</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/5muGeXdxKTs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvNjE2NTMyNS5naWY=/original/25MgY7.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxMi5wbmc=/original/QcooDB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMy5wbmc=/original/2SEqZ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxMy5wbmc=/original/t2v62G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMS5wbmc=/original/%2BkHn7e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxOS5wbmc=/original/Kl9ujt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5Njc0NC5wbmc=/original/fRCzAI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMyMS5wbmc=/original/zNpn4u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMi5wbmc=/original/yz0h4%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMyMC5wbmc=/original/Jhi60H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczNS5wbmc=/original/xCWZ8s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczOC5wbmc=/original/%2BvJXjo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvNjE2NTMzNi5naWY=/original/hM6L4A.gif]]
<h1>&nbsp;&nbsp;</h1>
<h1>It’s 1983,&nbsp;and the world&nbsp;feels hollowed out.</h1>
<p>LONG HAUL 1983 tells the story of a dangerous journey through an empty world.&nbsp;</p>
<p>You play a long-haul truck driver trying to make their way home. Every day, you’ll hit the road, navigating treacherous highways, fleeing from menacing threats, and dealing with the psychological impacts of isolation.</p>
<p>And at the end of each day, you’ll find a payphone, make a call, and leave a message for the most important person in your life.&nbsp;</p>
<p>They never pick up. You never stop calling.</p>
<p>Using a deck of cards, a few dice, and a microphone, players will create an original narrative of resilience in the face of world-shifting catastrophe.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU0NTQ0MTkuanBn/original/z2qgMU.jpg" loading="lazy"><br></p>
<p><br></p>
<h1>LONG HAUL 1983 is...</h1>
<ul><li>A solo game, so you can play it by yourself, at your own pace</li><li>A roleplaying game, so you'll create, develop, and embody a character as you play</li><li>A storytelling game, so your choices will be driven by creativity, not strategy</li><li>A journaling game, so you'll end the game with a unique record of your experience to revisit and share</li></ul>
<p><br></p>
<p><br></p>
<h1>The game features...</h1>
<ul><li>A unique single-player experience using evocative&nbsp;storytelling&nbsp;setups, embedded&nbsp;safety features, and branching endings
</li><li>An original dice system that highlights&nbsp;peril and precarity&nbsp;&nbsp;
</li><li>A 26-song soundtrack, including over 2.5 hours of the era's&nbsp;experimental ambient music, plus soul, jazz, pop, and&nbsp;punk tracks connected to specific in-game events
</li><li>A gameplay and performance structure perfectly suited for actual play podcasts and streams</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU0NTQ0MjMuanBn/original/nL2IMz.jpg" loading="lazy"><br></p>
<p><br></p>
<h1 class="text-center">"A brilliant piece of work: in content, design, and layout."</h1><p class="text-center">Kevin Petker, designer of Princess World&nbsp;<br>[<a href="https://twitter.com/KevinPetker" target="_blank" style="text-align: center; font-size: inherit" rel="nofollow noopener">twitter</a>] [<a href="https://kpetker.itch.io/princess-world-short-story-edition" target="_blank" style="text-align: center; font-size: inherit">itch</a>]</p><p><br></p>
<h1 class="text-center">"Visually striking, emotionally haunting - LONG HAUL 1983 compels me to write a story like no other solo RPG. The prompts feel electric and every small detail cohesively builds a worn world, where relentless danger and loneliness threaten to subdue you, but where your understated force of will gives strength to continue hoping beyond hope."</h1><p class="text-center">momatoes, game &amp; graphic designer<br>[<a href="https://momatoes.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener">website</a>] [<a href="https://twitter.com/momatoes" target="_blank" style="font-size: inherit" rel="nofollow noopener">twitter</a>]</p><p class="text-center"><br></p>
<h1 class="text-center">"LONG HAUL 1983 offers an escape like no other — a playlist so expertly crafted that I can smell the asphalt and oil burning on a sunny day — evoking perfectly my new favourite super specific genre of&nbsp;road trip horror."</h1><p class="text-center">mv, screenwriter and game designer<br>[<a href="https://twitter.com/mayvisit" target="_blank" style="font-size: inherit" rel="nofollow noopener">twitter</a>] [<a href="https://mvmv.itch.io/" target="_blank" style="font-size: inherit">itch</a>]</p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MDg4NjAuanBn/original/YROd6q.jpg" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><br></p>
<h1>You'll need...</h1>
<ul><li>Copies of the book and the player sheet
</li><li>A standard deck of 52 playing cards
</li><li>Four six-sided dice (Fudge/Fate dice are ideal, though not necessary)
</li><li>A device to record your voice&nbsp;(a phone app, an analog cassette recorder, etc.)
</li><li>A way to listen to music (playlists are available on Spotify and Apple Music)
</li></ul>
<p><br>
</p>
<p><br></p>
<p><em>LONG HAUL 1983 is&nbsp;33 pages (~5,600 words) long.<br></em><em>Writing, Layout, &amp; Design: Sean Patrick Cain<br></em><em>Photography:&nbsp;Luke Stackpoole, Katie Moum, &amp; Jack&nbsp;</em><em>Anstey</em></p>
<p><em>A portion of all sales will be used to support the&nbsp;First Nations’&nbsp;<a href="https://www.firstnations.org/covid-19-emergency-response-fund/" target="_blank" rel="nofollow noopener">COVID-19 Emergency Response Fund</a>&nbsp;to help&nbsp;Native communities respond and recover from the effects of COVID-19.</em></p>
<p>&nbsp;&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODUuanBn/original/IBd31s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODYuanBn/original/720YyE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODcuanBn/original/9Aq53i.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODMuanBn/original/WH5Pvf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODQuanBn/original/o1qV0F.jpg]]
<p>Long Journey Home<br><br>Cykes and Ramona are alone,&nbsp; the sole survivors of a tragedy that struck their small research spacecraft on its way back from an expedition. Follow them as they do their best to deal with everything that remains. <br></p>
<p><em>Long Journey Home </em>is an interactive fiction game about grief, friendship, and decomposers with two endings. Made in Twine. Music by <a href="https://lunaartemis.bandcamp.com/music" target="_blank" rel="nofollow noopener">@lunatunes</a>.<br></p>
<p>Content Warnings: Death, Grief, Weird Mushroom Illness, the Void of Space</p>
<p>Disclaimer: This game now feels painfully relevant during the Covid-19 pandemic because of the elements of death, grief, and sickness, but I have been working on this game since January and the initial idea for it is two years old. Any parallels between the game and current events are unintentional.<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMzc2LzQwNzcwMTYucG5n/original/yPMuji.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMzc2LzQwNzcwMTAucG5n/original/27aM4G.png]]
<p>Who ever said you can't go back?<br></p>
<p>LongStory, a charming and LGBTQ+ friendly dating sim set at the weirdly lovable Weasel Heights Middle School lets you pick your pronouns as well as who, or even if, you would like to date any of your romanceable friends.</p>
<p>On your first day of school you discover that the previous owner of your locker has “mysteriously” disappeared. Do you want to figure out what happened or are you too busy being a social butterfly and trying to avoid your enemies…</p>
<p>LongStory gives you a chance to find true love as a middle school student (yes with all the awkwardness that entails) but we promise it will be so much better this time around!</p>
<p><strong>Episode 1 Locker 1224:&nbsp;</strong> Being a new student at Weasel Heights, you’ve got enough on your plate trying to make new friends and deal with enemies but what happened to the previous owner of locker 1224 and why won't anyone talk about it?</p>
<p><strong>Episode 2 Hanna's Notebook:&nbsp;</strong> Things are getting serious with your crush but watch out there is some real Drama with Hanniferjane do you want to get involved with that? What will your crush think?</p>
<p><strong>&nbsp;Episode 3 The Party:&nbsp;</strong> The Party: Middle School dances are a big deal, who do you go with? Do you bring your crush or show up without a date? Things at Weasel Heights are never what they seem. It's time to learn more about your friend Colin and his big secret.</p>
<p><strong>Episode 4 Drama:&nbsp;</strong> A “new” student is back at Weasel Heights and it's causing all sorts of drama, no matter what you do it doesn’t seem like you can stay out of it. Friendships and relationships are strained, will you be okay?</p>
<p><strong>Episode 5 Make Up:&nbsp;</strong> &nbsp;Not every relationship is perfect. It's time to step up and make things right with your friends. Maybe even take the highroad and reach out to those you consider enemies.</p>
<p><strong>Episode 6: </strong>Middle school friendships and relationships are hard. Attend the intense but informative “Healthy Relationships Workshop.” and maybe the adults will know what they are talking about… for once.</p>
<p><strong>Episode 7:&nbsp;</strong> As your final year winds down it's time to choose what high school you will go to. How do you decide? Most importantly how will the TurkeyHawk?<strong></strong><br></p>
<p><strong>Episode 8:</strong>&nbsp; It’s the summer, Marcel has gone back to Dubai and the rest of your friends have all gotten jobs. You feel a little lonely what are you going to do about it?</p>
<p></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/y-7DdUsy-E0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzEucG5n/original/4GCmR8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzIucG5n/original/W9%2BxcC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjgucG5n/original/YJ%2BLt7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzQucG5n/original/HiAlga.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzMucG5n/original/PLn8Uj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjkucG5n/original/E4rPWz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzAucG5n/original/rlUcHv.png]]
<p>"Needless to say, when a story connects that way with the reader, the author has done something right, and is towards the top of my list." -- <a href="https://blog.templaro.com/review-lore-distance-relationship/" target="_blank" rel="nofollow noopener">Jack,&nbsp;blog.templaro.com/</a></p>
<p>"The aesthetic here 100% nails the early 2000s, pre-social media internet." --&nbsp;<a href="http://www.theshortgame.net/251-ifcomp-2020-part-4/" target="_blank" style="font-size: inherit" rel="nofollow noopener">The Short Game podcast</a></p>
<p>""This is absolutely [Bez's] best." -- <a href="https://www.patreon.com/posts/2020-episode-3-44441928" target="_blank" rel="nofollow noopener">Verb Your Enthusiam podcast</a></p>
<p><br></p>
<p>Follow user StaircaseHaven14 on a Neopets-esque site called Ruffians as she faces life's challenges, RPs with her long-distance BFF (or more than BFF?) Bee, and encounters familial hardship, from age 8 to 18.</p>
<p>By Naomi Norbez, aka Bez.&nbsp;&nbsp;Received 16th Place in the Interactive Fiction Competition 2020.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjgucG5n/original/34HlQ3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzIucG5n/original/fVfj5r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjkucG5n/original/gcV5MT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzgucG5n/original/xjiTAR.png]]
<p><strong>LOST</strong></p>
<p>LOST is a 2.5D adventure game&nbsp;that features a strong narrative, interactive dialogue, and original artwork. We&nbsp;hope that LOST makes people empathize with refugees and people who have experienced extreme loss.</p>
<p>Imagine a catastrophic event that forces you, your family, and your friends to flee your home and everything you knew. Imagine seeking help from a neighboring country that ruthlessly stop your attempt to enter their territory. LOST game seeks to explore the topics of empathy, emotions after a tragic loss, and what it means to be a refugee. We choose the name LOST because of its dual meaning. It can mean&nbsp;not knowing one's whereabouts but it can also denote something that has been taken away or cannot be recovered. LOST encompasses elements of both. The game begins in chapter 1 in the fictional country of Xanatos, greek for the god of death. Xanatos is being invaded by what appears to be poisoned creatures.&nbsp;</p>
<p>Our protagonist Lieutenant Juni searches for Captain Diana to assemble a brigade to stop these intruders. They meet on the roof of a nearby building and begin the attack. This initiates a tower defense level where you will shoot cannons at the enemy and prevent them from getting to your wall. This Across the sea, we get to know the story of the “intruders” who are in fact not intruders at all but fleeing a supernatural meteor disaster and are seeking shelter from a poisonous gas emitting from the meteors. This is the country of Intisar.&nbsp;</p>
<p>Our protagonist in this level is now a young boy named Yuri who has lost his whole family in this catastrophic event. Yuri explores his home talking to people who have been infected by the meteor showers. He ventures into the city where he will try to collect items from his past and dodge large spiders that have mutated from the poison gas. During this sequence, Yuri will talk to a few people along the way who will lead him to the end where he will meet two special people and a boat to take him to Xanatos.&nbsp;</p>
<p>Team:</p>
<p>Felipe Simas Magalhaes - Programmer, FX, Writing</p>
<p>Wentao "Vea" Zhou - Programmer, Game Artist, FX</p>
<p>Lara Alley - Game Artist, Programmer, Particle Effects</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0Nzc0LzM0NTIzMTIucG5n/original/2acKw0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0Nzc0LzM0NTIzMTMucG5n/original/au1zBz.png]]
<p><strong>Lost Order</strong> is a TTRPG mixing alternate history, heroes, magic, and time-travel, drawing inspiration from the <em>Fate/Stay</em> and <em>Fate Grand Order</em> video games by Type-Moon. No prior knowledge of the <em>Fate</em> universe is needed however-- just a love of mixing history and fantasy.<br></p>
<p>To play you need 4-8 players, including a GM, and three&nbsp;six sided die. <strong>Lost Order</strong> is best suited for short&nbsp;campaigns (5-10 session), but can be easily be extended into longer adventurers or used for one-shots.&nbsp;<br></p>
<p>---</p>
<p>Your purchase includes the 20-page fully illustrated rule-book and printable custom character sheets for each of the three asymmetrical classes. Players take on the roles either&nbsp;of human magician <em>Masters</em>, summoned mythological <em>Heroes</em>, or fusions of present and past,<em> Demi-Heroes</em>. Each classes has a wide variety of Skills, Origins, and Birth options to help customize characters quickly and easily.&nbsp;<strong>Lost Order</strong>&nbsp;uses the&nbsp;Powered by the Apocalypse game system, expanding upon the familiar rules to allow for successes that go beyond what&nbsp;is humanly possible.&nbsp;</p>
<p>---</p>
<p>All illustration work was completed by&nbsp;<a href="https://www.instagram.com/melspontaneus/" target="_blank" rel="nofollow noopener">Mel</a>&nbsp;and&nbsp;<a href="https://www.instagram.com/beeflorart/" target="_blank" rel="nofollow noopener">Bee</a>.&nbsp;Copy-editing was completed with help by&nbsp;<a href="https://commiss.io/passionfruitpavlova" target="_blank" style="font-size: inherit" rel="nofollow noopener">Passionfruitpavlova</a>.&nbsp;Character sheets were made by&nbsp;<a href="https://twitter.com/hktk1059" style="font-size: inherit" rel="nofollow noopener">hktk1059</a>.</p>
<p>Writing, design, and play-testing was completed myself.&nbsp;For additional guidance on the rules, to request a copy due to financial difficulties, or just to say hi, please message me at <a href="https://twitter.com/Nrvnqsrestray" target="_blank" rel="nofollow noopener">@Nrvnqsrestray</a>.</p>
<p>I will be updating the game as much as I can with your feedback&nbsp;and as always, the most&nbsp;updated version will always available to you free of change, no matter the price charge. This also includes any sample campaigns I add in the future.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjQucG5n/original/UssJ%2BR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjUucG5n/original/kCDqch.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwOTM0NDMucG5n/original/wL57FQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjcucG5n/original/3etRXB.png]]

<p>The City of <strong>Credence</strong>.&nbsp;</p>
<p>A cursed oasis in the doomed wastes of Acid Death Fantasy.&nbsp;</p>
<p>Drink Deep.&nbsp;</p>
<p><br></p>
<p>Liquid Science Doom is a setting for Troika! and Acid Death Fantasy.&nbsp;</p>
<p>It contains a city and some factions within that city.&nbsp;</p>
<p>It has 8 shrines to 9 gods.&nbsp;</p>
<p>It has 10 market stalls.&nbsp;</p>
<p>It is an independent production and not affiliated with Melsonian Arts Council.&nbsp;</p><p><br></p><p>Buy it in print at <a href="https://www.rookspress.com/products/liquid-science-doom" rel="nofollow noopener">Rook's Press!</a></p>
<p><br>All art by Evlyn Moreau. Subscribe to her patreon <a href="https://www.patreon.com/evlynmoreau" rel="nofollow noopener">here</a>.<a href="https://www.patreon.com/evlynmoreau" rel="nofollow noopener"><br><br></a>Heavily inspired by Vaults of Vaarn by Leo Hunt. Get them here:<br><a href="https://graculusdroog.itch.io/vaults-of-vaarn">Issue 1</a> and <a href="https://graculusdroog.itch.io/vaults-of-vaarn-2">Issue 2.</a></p>

[img width=500 [https://img.itch.zone/aW1nLzU2NTY5NDYucG5n/original/%2Bv%2FeNt.png]]
<p>*Epilepsy/Vertigo Warning*<br></p>
<p><br></p>
<p>“Lucid: Parables of the Ubermensch”&nbsp; is a pixel art 2D platformer with abstract theming where you walk through the dreams of an unknown entity. Lucid is a&nbsp;game&nbsp;that challenges traditional conceptions of&nbsp;what&nbsp;video games are&nbsp;creatively through&nbsp;an uncompromising artistic&nbsp;vision&nbsp;and subversion&nbsp;of traditional narrative.&nbsp; Every level in Lucid has a unique theme, unique level gimmick, and story built into it for the player to uncover.</p>
<p><br></p>
<p>Lucid has:</p>
<p>-Dozens of levels.</p>
<p>-Unique and visually dynamic art for each individual level.</p>
<p>-No nonsense retro 2D platforming with tight controls and refined level design.<br></p>
<p>-Various and ever-changing gameplay mechanics to keep levels interesting.</p>
<p>-A vision to share.</p>
<p><br><br>If you would like to give feedback or report bugs, do so here: <a href="https://forms.gle/rEMxTmR4mS1ytbXEA" rel="nofollow noopener">https://forms.gle/rEMxTmR4mS1ytbXEA</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/17PzKYSPGSY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NjAucG5n/original/DHAYbr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTYucG5n/original/CG4ZvN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTcucG5n/original/8DPJ7I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTUucG5n/original/nLC5iM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTkucG5n/original/lkYwrG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTQucG5n/original/9yuq18.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTMucG5n/original/HfFj8E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTIucG5n/original/LULDu4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTgucG5n/original/%2F%2FkiGB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTEucG5n/original/btdtup.png]]
<p>Your landlord is knocking on your door. You have one coin left to your name. You insert the coin into your slot machine...and...JACKPOT! Luck be a Landlord, tonight!<br></p>
<p>Luck be a Landlord is a roguelike deckbuilder about using a slot machine to earn rent money and defeat capitalism. This game does not contain any real-world currency gambling or microtransactions.</p>
<h3>Features</h3>
<ul><li>Roguelite gameplay - The symbols you can add to the slot machine are different every time!</li><li>Lots of Symbols to add to your slot machine - Each symbol has different effects and interactions.</li><li>Plenty of Items to choose from - The items are different every time as well, leading to interesting build strategies.</li><li>A terrible landlord to defeat.</li><li>A dog you can pet.</li><li>Capitalism.</li></ul>
<p><strong>A Steam&nbsp;Key is provided with every purchase!</strong></p>
<p><img src="https://img.itch.zone/aW1nLzQ4OTAxOTIucG5n/original/6GS9de.png" loading="lazy"></p>
<p>This Steam Early Access game is currently not a finished game and may or may not change significantly over the course of development. To learn more about Steam Early Access, please visit&nbsp;<a href="http://store.steampowered.com/earlyaccessfaq/" rel="nofollow noopener">http://store.steampowered.com/earlyaccessfaq/</a></p>
<iframe src="https://store.steampowered.com/widget/1404850/" frameborder="0" width="646" height="190"></iframe>
<p><strong>Join the community <a href="http://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener">on discord</a>!</strong></p>
<p><a href="http://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4OTAxODMucG5n/original/0ep6V%2B.png" loading="lazy"></a><br></p>
<p><a href="http://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener"></a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/5Vw-4cSsr7M" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzQ4NzkyMDkucG5n/original/l1UDow.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzQ4NzkyMTIucG5n/original/X01I5r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzQ4NzkyMTQucG5n/original/3KcfeN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzQ4NzkyMTYucG5n/original/%2FMry58.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzQ4NzkyMTkucG5n/original/TIvLhk.png]]
<p>"A&nbsp;clever little game, with stylish retro pixel art animation and a thought-provoking narrative." (<a href="https://www.freegameplanet.com/luminous-download-game/" target="_blank" rel="nofollow noopener">Free Game Planet</a>)</p>
<p>"Luminous is the sort of high-minded but unpolished game that made me fall in love with the indie community." (<a href="https://itch.io/blog/34277/itchio-recommends-free-games-for-your-weekend">itch.io Recommends</a><a href="https://itch.io/blog/34277/itchio-recommends-free-games-for-your-weekend" target="_blank"></a>)</p>
<p>Guide Keith through a darkened wasteland on a quest to rekindle the light. Can you bear the weight of your destiny as your light dwindles and&nbsp;the shadows twist into ever-stranger shapes? Can you trust the creature that guides you through this unsettling platforming adventure?</p>
<p>This game&nbsp;is definitely not a metaphor for anything. No way.</p>
<p>Featuring:</p>
<ul><li>A narrator that remembers your successes... and your failures.</li><li>Four unique story endings</li><li>A haunting original soundtrack&nbsp;by&nbsp;<a href="https://soundcloud.com/leamkeita" target="_blank" rel="nofollow noopener">Liam H. B.</a></li><li>Plenty of Things lurking in the dark</li></ul>
<p><a href="https://soundcloud.com/leamkeita" rel="nofollow noopener"></a></p>
<p>Recommended systems:&nbsp;Mac OS X 10.9+ or&nbsp;Windows Vista SP1+</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/BKiFUhlRwGY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzYucG5n/original/5n5%2BEE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzcucG5n/original/qGJaVO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzgucG5n/original/nROLXV.png]]
<h1 class="text-center">Funomena's award-winning Luna is now on itch.io</h1>
<h4 class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/_JPBlUvFMiE" allowfullscreen="" frameborder="0"></iframe>
</h4>
<h1 class="text-center">Overview</h1>
<p>A Bird's peaceful summer slumber is disturbed by the majestic call of a mysterious Owl. Enticed to swallow the last piece of the waning Moon, Bird is blown far from its Golden Gate home.</p>
<p>Re-awaken shadowy forests and bring life back to sparkling lakes. Discover hidden creatures, help Bird reunite the fragmented Moon... and find its way home. </p>
<ul><li><strong>Solve celestial puzzles</strong> to unlock each level's tree, plants and animal spirits.
</li><li><strong>Place, customize and interact</strong> with them in miniature, musical terrariums. </li><li><strong>Bring each world to life</strong>, revealing Austin Wintory’s haunting, enchanting score.</li></ul>
<p>Brought to you by <a href="http://www.funomena.com/" target="_blank" rel="nofollow noopener">Funomena</a>’s uniquely diverse team of veteran developers (<em>Journey, Flower, Boom Blox, The Sims 2</em>), Luna is an interactive fable about learning by the light of unexpected mistakes.<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM2NDMuZ2lm/original/K2Zbxt.gif" loading="lazy"></h4>
<hr>
<p>Luna started off in partnership with Intel and their RealSense Camera technology, but as the project evolved, and hand-tracked VR controllers began to emerge, we partnered with Oculus to bring the game to the Touch. The non-VR PC version was released shortly after the original launch date. The storybook edition later updated the core game with a&nbsp;voice over narrative &amp; localized subtitles to further elucidate Luna's heartfelt story.&nbsp;</p>
<p>You can find out more about how the idea for Luna came to be through these <a href="https://twitter.com/hunicke/status/931596077773369344" target="_blank" rel="nofollow noopener">tweets by Robin Hunicke</a>. Luna is a very personal game for Robin, and we hope it'll touch you like it has already touched others across the world.
<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM2NjMuZ2lm/original/1X%2F%2Fuw.gif" loading="lazy"></h4>
<div></div>
<h1 class="text-center">Reviews</h1>
<p><em>“Without so much as a single word, Luna traps us within its narrative fantasy, quickly switching its focus to puzzles so we discover the truth in metered, literary chunks.”</em>
<a href="http://gameranx.com/features/id/127196/article/luna-first-impressions-an-awe-inspiring-journey/" target="_blank" rel="nofollow noopener">Gameranx</a></p>
<p><em>“This process is truly special and unique because the more time you take with it, the more beautiful and rewarding the world will look...”</em>
8.6 – <a href="https://www.thenerdmag.com/luna-review-a-beautiful-immersive-fairytale/" target="_blank" rel="nofollow noopener">The Nerd Mag<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODYyMDEucG5n/original/4N6tWr.png" loading="lazy"><br></p>
<hr>
<p class="text-center">Download <strong>Austin Wintory's haunting score</strong> to Luna right <a href="https://austinwintory.bandcamp.com/album/luna" target="_blank" rel="nofollow noopener">here</a>.<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM3MDAuZ2lm/original/em98%2B%2B.gif" loading="lazy"></h4>
<h1 class="text-center">Recommended<strong> Specs<br></strong></h1>
<ul><li><strong></strong>Windows 10
</li><li><strong></strong>Intel Core i5 4590
</li><li>8 GB RAM
</li><li>NVidia GTX 960/965M/1050 (or greater) DX12-capable discrete GPU or AMD RX 460 (or greater) DX12-capable discrete GPU</li><li>Luna is best played in VR with motion controls or in 2D&nbsp;with a gamepad</li></ul>
<p><em>This itch.io listing now also includes the SteamVR version of Luna, compatible with headsets able to use that platform.&nbsp;</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/_JPBlUvFMiE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNjQuanBn/original/2qKSEr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNjMuanBn/original/gGMpXl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNTEuanBn/original/dXpRnr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMjI5MzcucG5n/original/PVxSRO.png]]
<p>This is a customized GUI for ren'py. It includes the PNG files and all of the code already programmed into a renpy file (Not Built). You can take the code and assets out, or rename the renpy game file and use it.</p>
<p><strong>This was made in Ren'py 7.4.4.1439</strong>
</p>
<p><img src="https://img.itch.zone/aW1nLzU4MzY4OTcucG5n/original/lzTBqo.png" loading="lazy"></p>
<p>
</p>
<h3>Includes:</h3>
<ul><li>All Standard Screens
</li><li>Textbox, Choices, and Quick menu
</li><li>An "Extras" screen for Achievements, Endings and a CG gallery (Code Included!)
</li><li>Code for everything already plugged in
</li><li>Formatted for&nbsp;1080x1920
</li></ul>
<p>You can plug your script into the game file and change the name, or take the assets and code as needed.
</p>
<p>The game uses an open source font "BerkshireSwash-Regular" which you can find for free:&nbsp;<a href="https://fonts.google.com/specimen/Berkshire+Swash" target="_blank" rel="nofollow noopener">Here</a>
</p>
<h3>Rights:</h3>
<p>If purchased you may use this project in commercial projects or free projects. You may not resell part of, or the whole GUI on it's own. You can modify the GUI and code to suit your needs.
</p>
<p>You can credit me as Jaime Scribbles if you want, but it is not required.
</p>
<h3>Instructions:</h3>
<p>Download, unzip, and enjoy! Some additional instruction included in the download, see below!
</p>
<p><img src="https://img.itch.zone/aW1nLzQyMzMwMDQucG5n/original/u1oCc5.png" style="max-width: 100%" loading="lazy">
</p>
<figcaption>You can find the instructions.txt file under the custom GUI file after it is unzipped. This is the same place where you would find the game folder, and the errors, log and traceback.</figcaption>
<h3>Sample Assets:</h3>
<ul><li><a href="https://alte.itch.io/uncle-mugens-backgrounds" target="_blank">Background Art by Uncle Mugen</a>
</li><li><a href="https://dejinyucu.itch.io/agustina-visual-novel-sprite" target="_blank">Sprite by DejiNyucu</a>
</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA5LnBuZw==/original/eLyEoi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA2LnBuZw==/original/DckHsP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTQzLnBuZw==/original/D2C4rO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTQyLnBuZw==/original/SIs2Mb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTEwLnBuZw==/original/unh9Ro.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA3LnBuZw==/original/nwMFvO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA4LnBuZw==/original/UgqQX4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTE1LnBuZw==/original/Md3gi4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTExLnBuZw==/original/Hwy%2B8N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTE0LnBuZw==/original/uLHdiY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTEzLnBuZw==/original/tgcMru.png]]
<<list-links "[tag[macOS]sort[title]]">>
<h3>HEROES NEVER DIE, THEY JUST REDEPLOY IN HELL!</h3>
<p>In the final days of WW2, a desperate Nazi war machine embraces the occult. The maniacal Major Strauss plans to open the gates of Hell itself. The Mad Devils are deployed to thwart this unhinged plan, but sometimes, heroism isn’t enough. Defeated and damned, the Mad Devils regroup in the underworld for one final mission.</p>
<h3>SIX DEMONIC GI's, SIX SETS OF POWERS, SIX PATHS TO VICTORY</h3>
<p>Cast into the abyss, the revenant Sergeant Jack Asher explores hell to reassemble his fallen squad. Each team member has been warped here, twisted and gifted demonic powers. Your expert crew are now armed with elemental and ethereal magics. Master them all and finish your fight.</p>
<h3>FIGHT FIRE WITH HELLFIRE</h3>
<p>It’ll take more than guns to smash the Nazi’s demonic ambitions. You’ll need the most chthonic weapons you can get your hands on and enough magic to light up the stygian void. Collect demonic crystals to empower weapons, develop your powers, and earn experience through violence.</p>
<h3>HELL ITSELF: MORE THAN FIRE AND BRIMSTONE</h3>
<p>The netherworld is a strange and varied place. Large parts are a perpetually-burning wasteland, others are twisted reflections of the mortal world, dense with choking overgrowth, frozen by sombre winds or fortified by damned Nazi legions.</p>
<h3>NAZIS: WORTH KILLING TWICE JUST TO MAKE SURE</h3>
<p>Hell was bad enough before WWII. Now it’s a warzone, populated with undead, ravenous demons and a legion of internal Nazis. They didn’t get the message when they died the first time - time to repeat the lesson, loud and clear.</p>
<h3>FEATURES</h3>
<ul><li>Play as one of six unique characters with their own upgradable weapons and powers and fight side-by-side with either a friend or AI squad mate</li><li>Enjoy a rich story campaign penned by UK author, <em>Dr. Greg Buchanan</em>, whose credits include&nbsp; No Man’s Sky: Atlas Rises, <em>Paper Brexit</em> and <em>Metro Exodus</em></li><li>Use upgradeable demonic powers and WWII inspired weaponry as you wage war against Nazi Monsters</li><li>Unique cover system, a mix of levels with procedurally generated areas and destructible set pieces</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/WTtFWizOGjU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY1LmpwZw==/original/%2BtD1iT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY3LmpwZw==/original/OtL2Nd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY4LmpwZw==/original/4tK6rg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY5LmpwZw==/original/7WeJHl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTcxLmpwZw==/original/WKb3OY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTcyLmpwZw==/original/JxwDcK.jpg]]
<h3 class="text-center"><em>Magic Trick</em> is a skateboarding adventure game about community! As the new WizKid in town, perform magic using rad skating combos, explore the whimsical city, and socialize with your wacky new neighbors who could use more magic in their lives!<br>✨🛹✨🛹✨🛹✨🛹✨🛹</h3>
<h3 class="text-center">Follow us on Twitter!!&nbsp;<br><a href="https://twitter.com/MagicTrickGame" rel="nofollow noopener">https://twitter.com/MagicTrickGame</a></h3>
<p>Magic Trick is a Unity 3D game, created by the L8r Sk8rs Team:</p>
<p><span class="">✨</span>Alex Arancibia - Co-producer, Lead UI Designer</p>
<p><span class="">✨</span>Gram Nitschke - Lead Quest Programmer, Gameplay Designer</p>
<p><span class="">✨</span>Georgio Klironomos - Co-producer, Lead UX Designer<br></p>
<p><span class="">✨</span>Brady Moore - Lead VFX Programmer, World Designer</p>
<p><span class="">✨</span>Annabel Maokhamphiou- Lead 3D Environment Artist, Co-Art Director,&nbsp;3D Prop Artist<br></p>
<p><span class="">✨</span>Casey Selzer-&nbsp; Lead World Designer, Gameplay Programmer<br></p>
<p><span class="">✨</span>Rachel Ramirez- Lead 3D Character Artist</p>
<p><span class="">✨</span>Toto Lin - Lead Writer, 2D Artist, World Designer</p>
<p><span class="">✨</span>Elliot Segal- Tech Director, Lead Programmer, Build Manager<br></p>
<p><span class="">✨</span>Hongyu Chen- Lead Musician, Sound Designer</p>
<p><span class="">✨</span>Corey Hunt - Lead Sound Engineer, Sound Designer <br></p>
<p><span class="">✨</span>Erica Li- Lead 3D Prop Artist, 3D Environment Artist, Concept Artist<br></p>
<p><span class="">✨</span>Merita Lundstrom- Lead Concept Artist, Co-Art Director, 2D Artist<br></p>
<p><span class="">✨</span>Herman Wu- Lead 3D Animator<br></p>
<p><em>P.S. A gamepad is recommended to play Magic Trick, but keyboard also works!
</em></p>
<p><em>P.P.S. Feedback is still greatly appreciated!</em><em><strong></strong></em>🛹<em><strong>Send it to magictrickgame@gmail.com </strong></em>🛹</p>
<p><em><strong>P.P.P.S. Have Fun Sk8rs!!!<br></strong></em></p>
<p><img src="https://img.itch.zone/aW1nLzQwODE2ODQuZ2lm/original/ZbEXLT.gif" loading="lazy">
<em><strong><br></strong></em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/v5AOs1u6LAo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNjYucG5n/original/vxPtqV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzMucG5n/original/5fJfY%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzQucG5n/original/m40L7O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzYucG5n/original/XegDVI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyODQucG5n/original/7C94T0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyODMucG5n/original/uxq6hz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzkucG5n/original/OVpRNV.png]]
<p style="text-align: justify">
	<strong>FUSSY PRISSY DREAMING WANDER<br>
	</strong><strong>COUNTRY SOLD TO YOU FOR ONLY €5<br>
	</strong><strong>€5 €5 WITH MUSIC BY NEW VADERS<br>
	</strong><strong>AND COLOURS AND THINGS.</strong>
</p><ul>
	<ul>
		<li><strong>MULTIPLE SMALL TREES AND VASE</strong><strong>S</strong><strong></strong></li>
		<li><strong>CAPSULE TOY COLLECTION MECHANICS</strong></li>
		<li><strong>INVESTIGATE THE MAGIC RUIN</strong></li>
		<li><strong>A SUPER RUIN FOR YOU TO WALK THROUGH MEET YOUR FRIENDS.</strong></li>
	</ul>
</ul><p>
	<strong>
	###########################################################</strong>
</p><p>
	Categorically, it is a narrative JRPG. You walk around,
there are doors and trees. You go here and you go there.
There are fragments of plot relayed out of sequence but
you do not care because the music and the colours. When
the narrative peaks, you say "Good!" and then forget it.
The years neglect this fertile country but the trees and
doors still standing somewhere form a silent windless day.
</p><p>
	<strong>
	############################################################</strong>
</p><p>
	The game is available for Mac Linux and PC.<br>
	It is best played with a mouse and not trackpad,
think of it like a twin-stick game.
	<br>
	Good luck and get the magic wand.
</p><p>
	<br>
</p><p>
	**UPDATE** Soundtrack album now available!! FREE for your PC!! <a href="https://trashtronix.bandcamp.com/album/magic-wand" rel="nofollow noopener">https://trashtronix.bandcamp.com/album/magic-wand</a><a href="https://trashtronix.bandcamp.com/album/magic-wand" rel="nofollow noopener"></a>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/t7_Gs73iP2s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk2LnBuZw==/original/pT436y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk1LnBuZw==/original/J4myKh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk0LnBuZw==/original/TcaIhb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjcwMjQ1LnBuZw==/original/mmEW%2Fn.png]]
<p>A fun look back at over 30 years of console computers through the generations. Each console is personified as a magical senshi, with their own look and aesthetic. Take a flip through the pages and enjoy over forty pieces inspired by the Atari 2600, the Sega Genesis, and the Nintendo Entertainment System!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0MzguanBn/original/6f06oI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0NDAuanBn/original/m1b3c%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0MzkuanBn/original/i7JRxy.jpg]]

<p>I've been thinking a lot about hope as of late. It is no wonder I am so strongly attracted to Solarpunk, which is how I came across the inspiration for Maker.</p>
<p><strong>Maker </strong>is a journaling RPG&nbsp;about hope. It came to me as I read <em></em><a href="https://howlround.com/write-future" target="_blank" rel="nofollow noopener">"Write to the Future", an essay by Georgina Escobar</a> about imagining impossible futures, and from imagining them making them possible.</p>
<p>Making impossible futures possible.</p>
<p>As I mentioned, I have been thinking a lot about hope as of late, specially as things only get worse in my country, and as I am sick myself.</p>
<p>That word, <em>"make"</em> kinda hit me in an odd way and it reminded me of the song </p>
<p><a href="https://youtu.be/cYx-0WjC8Zo" target="_blank" rel="nofollow noopener">Maker, by Anjimile</a>. Then I though of how&nbsp;by imagining an impossible future, you make it possible. And by doing so, you yourself are a Maker.</p>
<p>So every day as I imagine myself embarassing my now 2-year-old kid to their peers in teenagehood, telling them stories about making me get up in the middle of the night to prepare a bottle of milk, or running around the house after a naked baby trying to escape the shower, I realise I feel hope.&nbsp;</p>
<p>And I hope that by imagining this not at all impossible future, I am a Maker, and that by imagining any futures at all, it is Made.</p>
<p>Think about the past, and how you changed from it. Write it down and it is Made.<br></p>
<p>Think about the now, and how it doesn't care about what passed or hope for what comes. Write it down and it is Made.</p>
<p>Finally, imagine the future, and as you imagine, it becomes possible. Write it down and it is made.</p>
<p>Take this game and be a Maker.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/cYx-0WjC8Zo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njk3LnBuZw==/original/99S69u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njk1LnBuZw==/original/kfTB7Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njg5LnBuZw==/original/fzr0SS.png]]
<p>Manoir Fatemou is a printable tile set <strong>compatible </strong>with any miniature game, RPG or Dungeon-Crawer.</p>
<p>The set contains <strong>50 different high quality tiles</strong> (300dpi) that depict a dungeon system. The re-usability and limitless and you can design a new and unique castle interior complexes for every game.
  </p>
<p>These full color map tiles feature&nbsp;a 1-inch grid for maximum compatibility. 
  </p>
<p>Set up is easy, all you have to do is <strong>print </strong>the files, <strong>cut </strong>them out and <strong>build </strong>your own dungeon.
  </p>
<p><strong>More rooms coming soon</strong> … So please add a comment and let me hear your thoughts and ideas to decide which tile is going to be next.<span></span>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjkzLmpwZw==/original/O2TndG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MTYwNDI1LmpwZw==/original/I9XUdu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjY0LmpwZw==/original/ixcshb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3ODEzLmpwZw==/original/8bRiGV.jpg]]
<p>Marchland is a strategy board game where players collect cards and compete to claim regions, connecting them to expand their territory and become the most powerful empire in the land.<br></p>
<p>Players take turns to collect cards of various types, and use them to claim regions - earning more points for claiming larger regions, connecting regions across the map, and taking control of clusters of neighbouring regions.</p>
<p>Music by <a href="https://twitter.com/king_spooner" target="_blank" rel="nofollow noopener">Jack King-Spooner</a></p>
<p>Art&nbsp;by <a href="https://twitter.com/glitchirs" target="_blank" rel="nofollow noopener">Glitchirs</a> and <a href="https://www.artstation.com/janetteramos" target="_blank" rel="nofollow noopener">Janette Ramos (Imaginaires)</a></p>
<p>Created by <a href="https://glitchirs.itch.io/" target="_blank">Glitchirs</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xAjNbfdD5Yo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzI4MTM2LzQwNDQxMDMucG5n/original/82wpkl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI4MTM2LzQwNDQwOTcucG5n/original/WlA2j9.png]]

<p>Martian Space Blaster is a asteroids like top-down shooter where you fight squid monsters in space that was made during the Miziziziz game jam. That's it. There is not much to it. This was my first game jam and while I wished I could have done more, i'm proud of my game.</p>
<p><br></p>
<p>The art assets in the game are from the Kenney 1-bit art pack:</p>
<p><a href="https://kenney.nl/assets/bit-pack" rel="nofollow noopener">https://kenney.nl/assets/bit-pack</a></p><p>If you liked my game please leave a comment.</p>

[img width=500 [https://img.itch.zone/aW1nLzQxMTM5MzUucG5n/original/iKm9Qb.png]]


<p>A Tagalog-English micro RPG analog game about concerned citizens investigating a dubious project in a local town.&nbsp;Here's the plothook:&nbsp;</p>
<p>
<em>Nabalitaan
mo na sa huling town meeting na hindi mo in-attend-an pero tsinismis
sayo ng landlord o kapitbahay mo na may ipapatupad na bagong project
si Kapitan Kunat. Bilang isang mamamayang may pake sa lipunan, misyon
nyong malaman kung ano ang tunay na layunin ng project at isiwalat sa
buong purok ang tunay na kulay ni Kapitan!&nbsp;</em>
</p>
<p>Enjoy this pamphlet-sized game of town gossips, weird rumors, and corrupted local government! Corrupted by who or what? Play to find out!<br></p>
<p>Feel free to comment or review!&nbsp;</p>
<p>Game is submitted as part of <a href="https://itch.io/jam/dreamjam">DREAMJAM</a>. #PurokDream #KapitanDream #ProjectDream<br></p>
<p>Game also a submission to <a href="https://itch.io/jam/hilagyo-jam">HilagyoJam</a>, a game jam for Filipinos, by Filipinos.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzIzNDQ2OTEucG5n/original/zeNOO5.png]]
<p>Issue 1.1 of Maytaway Quarterly: The all-Indigenous sports and gaming magazine. This issue includes:</p>
<p>Editorial from <a href="http://twitter.com/taylordnd" target="_blank" rel="nofollow noopener">Taylor Daigneault</a>&nbsp;(Métis)</p>
<p>Looking Back &amp; Giving Back by&nbsp;<a href="http://twitter.com/shaynapowless" target="_blank" rel="nofollow noopener">Shayna Powless</a>&nbsp;(Oneida)</p>
<p>Designing <em>Theurgy</em> by&nbsp;<a href="http://twitter.com/mugulord" target="_blank" rel="nofollow noopener">Brendan Prettie</a>&nbsp;(Métis)</p>
<p><em>Tower of Baybayin</em> by <a href="http://twitter.com/leanonmyhouse" target="_blank" rel="nofollow noopener">Mylene&nbsp;Speidel</a> (Tagalog)<br></p>
<p>As well as features on Jack Jacobs (Creek), Brayden Chee (Navajo), and a celebrations of Indigenous excellence from around the world.</p>
<p><strong>Want to contribute to&nbsp;</strong><em><strong>Maytaway?</strong></em></p>
<p>Send your pitches to Taylor Daigneault via email <a href="mailto:tinkertaylorpublications@gmail.com" target="_blank" rel="nofollow noopener">tinkertaylorpublications@gmail.com</a> or DM <a href="http://twitter.com/taylordnd" target="_blank" rel="nofollow noopener">@Taylordnd</a> on Twitter<em>.</em></p>
<p>Maytaway Quarterly pays contributors 5¢/word for their contributions.</p>
<p><strong><a href="http://patreon.com/mqmag" target="_blank" rel="nofollow noopener">Subscribe</a> to <em>Maytaway Quarterly</em> on Patreon&nbsp;</strong>to have each edition sent to you directly and to gain access to all back-issues.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NDYucG5n/original/YRIXXQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NTYucG5n/original/ZjK0AR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NTUucG5n/original/8Hl3%2B1.png]]
<h1>Date a robot, donate to the Trevor Project!</h1>
<p>To celebrate the 1 year anniversary of&nbsp;<a href="https://silentman.itch.io/mech-romancer" target="_blank">Mech_Romancer, A Trans-humanist Dating Sim</a>, I'm now offering this special charity bundle, featuring both Windows and Mac version of the game,&nbsp; plus&nbsp;3 original wallpapers of the game's mecha in both landscape and portrait&nbsp;by the game's original artist, <a href="https://twitter.com/artsyrobo" target="_blank" rel="nofollow noopener">Artsy Robo</a>!<br><br>100% (minus Itch.io's cut)&nbsp;of what you decide to pay will be donated to the <a href="https://www.thetrevorproject.org/" target="_blank" rel="nofollow noopener">Trevor Project</a>, a 4-star non-profit organization that provides a suicide hotline to LGBT+ youth in America. Are you or someone you know in danger? Call&nbsp;<a rel="nofollow noopener">1-866-488-7386</a>&nbsp;for help.</p>
<p>Interested in the game, but don't have any money to spare? <a href="https://silentman.itch.io/mech-romancer" target="_blank">Download the game by itself here.</a><br>Interested in donating $5 or more? <a href="https://silentman.itch.io/mech-romancer-charity-bundle-2" target="_blank">Buy Charity Bundle 2 with an extra special BONUS wallpaper&nbsp;by Vichel Lim!</a></p>
<h2>The only thing standing between humanity and destruction is you, and the relationships that you forge.</h2>
<p>Mech_romancer is a dating sim starring you, an out-of-sorts mech pilot who must create a bond with JEET, an experimental learning AI implanted into your robot. Train them, teach them how to perform under pressure, and form a special bond that can never be broken in order to save Earth!</p>
<p><strong>10/18</strong></p>
<p>Mech_Romancer is now PWYW. You don't have to pay a cent, but 100% (minus Itch.io's cut)&nbsp;of what you DO pay will be donated to the <a href="https://www.thetrevorproject.org/" target="_blank" rel="nofollow noopener">Trevor Project</a>, a 4-star non-profit organization that provides a suicide hotline to LGBT+ youth in America. Are you or someone you know in danger? Call&nbsp;<a rel="nofollow noopener">1-866-488-7386</a>&nbsp;for help.</p>
<p><br></p>
<p>6/20</p>
<p>This bundle was a part of Itch's bundle for racial justice and equality, and all proceeds towards that bundle went towards the NAACP and bail funds. Black lives matter, and none of us are free until we all are. Thank you to everyone who purchased the bundle.&nbsp;</p>
<p>Featuring:</p>
<ul><li>More words than both Final Fantasy III for the Famicom and the original Resident Evil!</li><li>4 main endings and&nbsp;<del></del><em><del>a certain number</del></em><em><del>&nbsp;of</del></em>&nbsp;secret endings!</li><li>Art by&nbsp;<a href="https://twitter.com/artsyrobo" target="_blank" rel="nofollow noopener">@artsyrobo</a>!</li><li>Unobtrusive yet flexible gender and sexuality options!</li></ul>
<p>Credits:</p>
<ul><li>Writing, story, and characters by&nbsp;<a href="https://twitter.com/Silentman0" target="_blank" rel="nofollow noopener">Silentman</a></li><li>Character design, mechanical design, and art by&nbsp;<a href="https://twitter.com/nebularobo" target="_blank" rel="nofollow noopener">@nebularobo</a></li><li>Inspiration and title by&nbsp;<a href="https://twitter.com/WoolieWoolz" target="_blank" rel="nofollow noopener">Woolie Madden</a>&nbsp;and <a href="https://twitter.com/MattMcMuscles" target="_blank" rel="nofollow noopener">Matt McMuscles</a><a href="https://twitter.com/2BFOfficial" rel="nofollow noopener"></a></li><li>Additional testing by Ian Bohannon and&nbsp;<a href="https://twitter.com/SammyTheOG" target="_blank" rel="nofollow noopener">Sammy</a></li><li>Music taken from&nbsp;<a href="https://tabletopaudio.com/" target="_blank" rel="nofollow noopener">https://tabletopaudio.com/</a></li><li>Backgrounds and sound effects edited and adapted from various sources.</li><li>Programmed using Tyranobuilder.</li></ul>
<p>Know bugs:</p>
<ul><li>There seems to be a bug with Q.Loading. Use the normal save/load system when necessary.</li></ul>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MzAucG5n/original/IHT4SB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MDguanBn/original/%2Fr5L2d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MDkuanBn/original/lF2PKL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MTAuanBn/original/2QmEE6.jpg]]
<p class="text-justify"><strong><em></em></strong><em><strong>Meditation 5 </strong>is a minimalist game about balance, concentration and strategy inspired by Taoist philosophy. The goal is to prevent the screen from turning red by shooting abstract enemies with two crosshairs simultaniously. Constant demand for concentration without much distraction pulls you into a meditative flow. Since the difficulty increases the longer you play, you may need to sacrifice advancement to get yourself some air. <br><br>How long can you prevail? Improve your abilites and find strategies to go for the highest score on three difficulty Levels. Full controller support, including XINPUT and Dualshock devices.<br></em></p>
<p><em>Soundtrack available:<br></em></p>
<p><em><a href="http://thunderperfectwitchcraft.bandcamp.com/album/meditation-5-ost" rel="nofollow noopener">http://thunderperfectwitchcraft.bandcamp.com/album/meditation-5-ost</a><br></em></p>
<p></p>
<p class="text-right"></p>
<p><strong>Features:</strong></p>
<p>• Support for Windows and Linux<br>• Minimalist design inspired by Taoist philosophy<br>• Simple, but deep game play<br>• 25 minute of Ambient OST included<br>• Full support for XBOX-, Dualshock- and many other game controllers<br>• Plays smooth, even on dated hardware<br>• Adjustable difficulty</p>
<p><br></p>
<p></p>
<p><strong>Recommended hardware:<br></strong></p>
<p><strong></strong>• Up-to-Date, 64-bit Linux or Windows OS with working drivers<br>• Gamepad strongly recommended, fallback keyboard mode is included <br>• 2-Core 2,6 GHZ processor<br>• ATI HD 7700 or better (or equivalent NVIDIA-card) <br>• 2GB of RAM<br>• 100 Megabyte free storage</p>
<p><br></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/w0uy1Nyei3o" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzQ3MTA1NjMuZ2lm/original/L4VyaF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjMucG5n/original/310tCw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjIucG5n/original/xxYhag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjQucG5n/original/kXEIA0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyNTMzMDkucG5n/original/PTeq5l.png]]
<p><strong style="color:#F81894; font-size:27px">Memories of East Coast</strong></p>
<p>A debut game of an immersive visual novel experience that brings you on a journey through memory, nostalgia and guilt. Will you accept your fate?</p>
<p><strong style="color: rgb(248, 24, 148); font-size: inherit">STORY<br></strong>Memories of East Coast takes you, as the character Sam, on a journey through memory, nostalgia, and guilt. As he revisits a place he hasn’t been to in fifteen years, an unexpected specter from his past emerges, forcing him to face those ghosts once again in new ways.</p>
<p><strong style="font-size: inherit; color: rgb(248, 24, 148)">LENGTH<br></strong>1 Hour</p>
<p><strong style="color:#F81894; font-size: inherit">FEATURES</strong></p>
<ul><li>Lo-fi music.
</li><li>Immersive story.
</li><li>Psychological advice.
</li><li>Memory-trigger moments.
</li><li>Ice cream!
</li></ul>
<p>. . . . . .</p>
<p><strong style="font-size: inherit; color: rgb(248, 24, 148)">Developer's note:</strong>&nbsp;
The development started in late 2020, Memories of East Coast seeks to provide a new, refreshing, and&nbsp;<strong style="color:#F81894">immersive visual novel</strong>&nbsp;experience unlike any other. We used a different approach with this project; in order to let the readers immersed in the story, we carefully picked a list of suitable music that fits in with the background art and the story. In addition, we purposefully not include any character images.
</p>
<figure><a href="https://www.buymeacoffee.com/roomahgaming" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU1NDE5NjIucG5n/original/CmaYZR.png" width="200" loading="lazy"></a></figure>
<p><img src="https://img.itch.zone/aW1nLzYwNDg1OTUucG5n/original/lddpZ9.png" style="color: inherit; font-size: inherit" loading="lazy">. . . . . .</p>
<p><strong style="color: rgb(248, 24, 148); font-size: inherit">AVAILABLE ON STEAM<br></strong></p>
<iframe src="https://store.steampowered.com/widget/1607430/" frameborder="0" width="646" height="190"><span class=""></span></iframe>
<p>. . . . . .<br></p>
<p><strong style="font-size: inherit; color: rgb(248, 24, 148)">SYSTEM REQUIREMENTS<br></strong></p>
<ul>MINIMUM:<ul><li>OS:&nbsp;Windows Vista/7/8/10
</li><li>Processor:&nbsp;2.0 GHz Core 2 Duo
</li><li>Memory:&nbsp;2 GB RAM
</li><li>Graphics:&nbsp;OpenGL 2.0
</li><li>DirectX:&nbsp;Version 9.0c
</li><li>Storage:&nbsp;200 MB available space
</li></ul></ul>
<ul>RECOMMENDED:<ul><li>OS:&nbsp;Windows Vista/7/8/10
</li><li>Processor:&nbsp;3.0 GHz Intel i3 2100 or Higher
</li><li>Memory:&nbsp;4 GB RAM
</li><li>Graphics:&nbsp;Intel HD Graphics or Higher
</li><li>DirectX:&nbsp;Version 11
</li><li>Storage:&nbsp;200 MB available space</li></ul></ul>
<p><strong style="font-size: inherit; color: rgb(248, 24, 148)">MORE FROM ROOMAH GAMING:</strong></p>
<iframe frameborder="0" src="https://itch.io/embed/970114?border_width=0&amp;bg_color=000000&amp;link_color=d90071" width="206" height="165"><span class=""></span><a href="https://roomahgaming.itch.io/pencil">I&#x27;m A Pencil by Roomah Gaming</a></iframe>
<p><span style="color: rgb(134, 136, 138); font-size: 14px"><em>Copyright © Roomah Gaming, All rights reserved.</em></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OElyc4sDkFA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzUyNTIyODUucG5n/original/S%2B%2F83T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzUyNTIyOTEucG5n/original/LRNGs%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzUyNzAyMjUucG5n/original/WfdNev.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzUyNTIyODgucG5n/original/fnUfq3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzUyNTIyODcucG5n/original/c30p3q.png]]
<p>I reread this poem recently and it inspired a game.</p>
<p>The intended experience is for <strong>two players to play on one keyboard</strong>.&nbsp; If you touch hands it's okay, good fences make good neighbors.&nbsp; You can also play by yourself.</p>
<p>Move along the wall and patch it up.&nbsp; Once a rock is gone, it's gone.&nbsp; Nature's first green is gold, ya know?</p>
<p>The demo is 1 year long; the full version goes until you lose.&nbsp; I imagine 100% of the money I make on this game will go toward buying baby formula, so consider that before supporting.</p>
<p>Feel free to share your highscore and experience!&nbsp; This was originally supposed to be a chill experience but I&nbsp;couldn't help myself, I added a score :\</p>
<p>~~~Humans who helped me make this~~~</p>
<ul><li>Robert Frost: "Mending Wall"<ul><li><a href="https://www.poetryfoundation.org/poems/44266/mending-wall" rel="nofollow noopener">https://www.poetryfoundation.org/poems/44266/mending-wall</a></li></ul></li><li>Tree trunk by Johann C. Shoot'em up graphic kit: <a href="http://opengameart.org/content/lpc-a-shootem-up-complete-graphic-kit" rel="nofollow noopener">http://opengameart.org/content/lpc-a-shootem-up-complete-graphic-kit</a></li><li>Trees: formconstant&nbsp;<ul><li><a href="https://opengameart.org/content/64x128-isometric-tiles-grassland-seasons" rel="nofollow noopener">https://opengameart.org/content/64x128-isometric-tiles-grassland-seasons</a></li></ul></li><li>Snow:&nbsp;Created by Jordan Irwin (AntumDeluge)<br>Canonical link: <a href="https://opengameart.org/node/109748" rel="nofollow noopener">https://opengameart.org/node/109748</a></li><li>Top Down Sprites:<ul><li><a href="https://opengameart.org/content/top-down-pokemon-esque-sprites" rel="nofollow noopener">https://opengameart.org/content/top-down-pokemon-esque-sprites</a></li></ul></li><li>kenney.nl</li><li>Hot coffee:&nbsp;Created by Otoniel Reyes<br><a href="https://opengameart.org/content/hot-coffee" rel="nofollow noopener">https://opengameart.org/content/hot-coffee</a></li><li><a href="https://www.instagram.com/macrosecosmos/" target="_blank" rel="nofollow noopener">Mike Tanner</a> and <a href="https://donkeycan.itch.io/" target="_blank">Calvin Dupee</a> - Chopin 8-bitifying.</li></ul>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc3NzcucG5n/original/DVK%2F1C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjQuZ2lm/original/qxQD45.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjMuZ2lm/original/o2zJij.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjIuZ2lm/original/BGBl1e.gif]]
<$list filter="[is[current]has:field[url]]"> <td> 
{{||OriginalUrl}} </td> </$list> 
<$list filter="[is[current]has:field[rating]]"> <td> 
{{||ratingViewTemplate}} </td> </$list> 
<$list filter="[is[current]has:field[average_session]]"> <td> 
{{||averageSession}} </td> </$list>
<p>Metamorphabet is normally $5.00, but we've made it Pay-What-You-Wish until the end of 2016. Enjoy!</p>
<p>
	"Metamorphabet is a thing of joy, on the surface simple, underneath a labour of love. And you'll love it too." - 
	<a href="http://www.rockpapershotgun.com/2015/04/29/metamorphabet-review/" rel="nofollow noopener">Rock, Paper, Shotgun</a>
</p>
<p>
	Metamorphabet is a playful, interactive alphabet. Poke, prod, drag, and spin the letters of the alphabet to reveal surprising and luminous transformations.</p>
<p>
	<span></span>Mouse or touchscreen recommended.
</p>
<p>
	Purchase includes a Steam key.
</p>
<p>
	<small>
	<u>Minimum system requirements: </u><br>
	100MB disk space, 512MB RAM
	<br>
	PC: Windows 7/8 Classic, 2.33GHz+ x86-compatible processor (Intel Atom 1.6GHz+ for netbooks)
	<br>
	MAC: OS X 10.7+, Intel Core Duo 1.83GHz+
	<br>
	<em>Performance may vary on older/slower machines.</em>
	</small>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk2ODAucG5n/original/JGjepg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk3MjcucG5n/original/NMEXiv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk2NzcucG5n/original/IeYVYf.png]]
<p><a href="http://enembydev.tumblr.com/post/151873041427/no-mans-asteroids-probably" rel="nofollow noopener"></a></p>
<p>Metori is a strategy sandbox game reminiscent of older arcade games. Control many ships, and use tactics to outmaneuver and outnumber everyone else.<br>Build a fleet. Capture territory. Defeat your enemies.<br>Note: Metori is <em>not</em> a twin-stick shooter. It is built to be playable with one hand, making it <strong>accessible</strong> to many gamers.<br></p>
<h2>Features</h2>
<ul><li>Fully fledged AI Commanders!
</li><li>Sandbox Gameplay</li></ul>
<h2>Content</h2>
<ul><li>Randomly generated Asteroid fields
</li><li> Many ship types with variants
</li><li> 3 different commander modes
</li><li>Campaign
</li><li>Replayable Instant Action Missions</li></ul>
<p><br></p>
<p><strong>Please note</strong> that this won't run on <a href="https://steamcommunity.com/groups/steamworks/announcements/detail/3632639303428097613" rel="nofollow noopener">new MacOSX updates</a>. Nothing I can do about that, sadly.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XcvDBR_sYh8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU0LmdpZg==/original/Wumx9R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU2LnBuZw==/original/%2BYndo6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU1LmdpZg==/original/Dgghjs.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5Ni5wbmc=/original/QrYpbK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5Ny5wbmc=/original/J2Nw%2B2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5OC5wbmc=/original/tJ3E0D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTgwMC5wbmc=/original/ZOJdAs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5OS5wbmc=/original/Q3uQwE.png]]
<p>Michtim is my love letter to Saturday morning cartoons like Ewoks and the Smurfs. It's also an idealistic game, because in this game, it's not about the monsters you slay – quite contrary. It's about exploring a world that's larger and hostile, but that holds wonder and amazement. Michtims want to protect nature;&nbsp;and they want to set humans back on the path to a better life. It can be a heartwarming experience;&nbsp;but it also has tight mechanics and can handle fights.&nbsp;</p>
<p>The game features a totally unique System. Your traits are Emotions, and on rolls that come up as 6, you generate Mood markers of the appropriate emotion. Your character can also have a combination of 12 Callings. These are very minimalistic and simple on one hand, but you can combine them however you like and the best thing:&nbsp;you can play an Angry, a Compassionate or a Scaredy-Cat Cook. There are no favored Stats in this game, so each Class can be played in 5 very radically different ways!<br></p>
<p>This game means a lot to me, since it marks my graduation into a full fledged Master of Arts;&nbsp;but it's also the baby of my disabled partner Alex and myself. We always lacked a space that was welcoming to us;&nbsp;and with Michtim, we basically wanted to offer peeps a place that's free from oppression.</p>
<p>I really hope you enjoy the game, and as a special offer for you itch-friendlies, I&nbsp;have added all the previously add-on DIY card printing files for FREE.</p>
<p>If you want to buy physical copies, you can get them on my <a href="https://www.drivethrurpg.com/product/105250/Michtim-Fluffy-Adventures" target="_blank" rel="nofollow noopener">DriveThruRPG</a>.</p>
<p><a href="https://www.drivethrurpg.com/product/105250/Michtim-Fluffy-Adventures" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzI2ODA2OTUucG5n/original/PpNQdy.png" style="max-width: 100%; font-size: 14px" alt="Buy Hardcover" title="Buy Hardcover" loading="lazy"></a>&nbsp; &nbsp;<a href="http://www.drivethrurpg.com/product/185994/Michtim-Card-Pack-BUNDLE?src=GA" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzI2ODA3MTEucG5n/original/qYz%2BaW.png" alt="Buy Cards" title="Buy Cards" loading="lazy"></a><span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2FE9kFYK25c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2MDkyNDkucG5n/original/Ka6nO1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzAucG5n/original/MEHodv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MjkucG5n/original/bGmyIV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzEucG5n/original/7%2BNgrq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzMucG5n/original/7r3tBG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzQucG5n/original/iB0H4C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzUucG5n/original/TYIstA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzcucG5n/original/Z%2FjWsd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzYucG5n/original/o2fBzQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzgucG5n/original/XMez9Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzIucG5n/original/ZoqkLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2NDEuanBlZw==/original/lSHS0b.jpeg]]
<h3 style="color: #FF8400">Reviews</h3>
<p>
	"It's got style… It gets you thinking. It gets your toe tapping as well because the music in this is fantastic… This is a clever reintroduction of puzzle and rhythm fusion." 
	<br>
	8.0 Marissa / 8.0 Victor – 
	<a href="http://epn.tv/all/spotlight/micron-review/" target="_blank" rel="nofollow noopener">Reviews on the Run</a>
</p>
<p>
	"Micron presents a perfect blend of aesthetically-pleasing visuals and head-bopping music that is sure to leave you thinking about the game long after you've completed it." 
	<br>
	4.5/5 stars – 
	<a target="_blank" href="http://operationrainfall.com/2014/08/14/review-micron/" rel="nofollow noopener">Operation Rainfall</a><span></span><br>
</p>
<p>
	"Micron is more of an interactive audio-visual experience than just a simple puzzle game, and if you're at all into retro styled games and music this is a puzzler you just can't miss." – 
	<a href="https://www.youtube.com/watch?v=USCSt6vcXyo" target="_blank" rel="nofollow noopener">CGRUndertow</a>
</p>
<h3 style="color: #FF8400">About Micron</h3>
<p>
	Micron is a unique fusion of puzzle and rhythm gameplay. Place pieces on the board to deflect bullets of energy that fire to the beat. Guide the bullets to the exit through 51 challenging levels — and 12 bonus levels — featuring a variety of distinctive soundscapes. Your solutions create the music.
</p>
<h3 style="color: #FF8400">Award Winning Design</h3>
<p>
	Micron began as a game created for Kongregate's 'Project Eden: Experience the Music' game contest, in which it won 2nd place. The judges included Tetsuya Mizuguchi, creator of REZ and LUMINES, and representatives from Ubisoft, Gamespot, and Kongregate.
</p>
<p>
	"Classic visual like the Famicon but experiencing the process of sound effects evolving into the music felt really good. The harder the game, the more exciting the music gets—this was blended perfectly." — Tetsuya Mizuguchi
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/cf8b8KYju30" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA2LmpwZw==/original/LN9d6I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA3LmpwZw==/original/uxJz9M.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA4LmpwZw==/original/1ygM%2B3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA5LmpwZw==/original/th5M0B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzEwLmpwZw==/original/GNfmVC.jpg]]
<p><strong>While working in the laboratory one day, you notice something strange… mutant motile cells have escaped their cultures and are trying to reproduce!!! Can you stop them before they mutate the egg cells and take over the planet?</strong></p>
<p><br>This game is a frantic “bounce-em-up” physics game where you must set the power and direction of the egg cell and squash all the motile cells before they can remove the protective coating of the egg and mutate it. However, not only have the motile cells mutated, but some other benign cells too which you can use to “power-up” your egg cell! Just as well, since the motile cells are evolving fast and some of them even have special abilities…<br><br><strong><u>Game Features:</u></strong></p>
<ul><li>Frantic physics-based bouncing fun</li><li>Multiple power up cells… Lightning attacks, shields, spikes and many more!</li><li>Multiple enemy motile types to challenge your skills</li><li>Massive boss motiles that require accurate bouncing to defeat</li><li>Multiple achievements to attain</li><li>Local and online highscores</li><li>Three levels of difficulty</li><li>Game checkpoints so you don’t lose progress if you have to stop playing</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ibb3FjWAHM0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTkucG5n/original/6xHNdg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTUucG5n/original/ttG3bi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTgucG5n/original/GNIQG7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTQucG5n/original/KI6Hxo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcxMDEucG5n/original/pEkud%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTYucG5n/original/tQ07p3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcxMDAucG5n/original/TDGQT6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTcucG5n/original/sR7sHY.png]]
<p><em>Migracciones </em>is a serious game that tells the story of Raul's journey over Mexico to the USA. Through the dice, you go through the main routes that migrants use, where there will be boxes that tell a little story of common events that migrants go through.</p>
<p>Migrations is a game still in development, and its main pillar is the narrative aspect.&nbsp;</p>
<p>Articles about design process:</p>
<p>&nbsp;<a href="https://learto-ler.medium.com/designing-migracciones-first-part-the-concept-78bc0b1ff88c" rel="nofollow noopener">https://learto-ler.medium.com/designing-migracciones-first-part-the-concept-78bc...</a></p>
<p><a href="https://learto-ler.medium.com/designing-migracciones-second-part-the-characters-1476e386fa48" rel="nofollow noopener">https://learto-ler.medium.com/designing-migracciones-second-part-the-characters-...</a></p>
<p><a href="https://learto-ler.medium.com/designing-migracciones-third-part-posmortem-58f5704ae83c" rel="nofollow noopener">https://learto-ler.medium.com/designing-migracciones-third-part-posmortem-58f570...</a></p>
<p><strong>I would appreciate any donation to continue developing videogames.&nbsp;</strong><br></p>
<p>Repo:&nbsp;<a href="https://github.com/leartoler/migracciones" rel="nofollow noopener">https://github.com/leartoler/migracciones</a></p>

[img width=500 [https://img.itch.zone/aW1nLzQ2NTM2MTMucG5n/original/jcbAzA.png]]
<iframe width="560" height="315" src="https://www.youtube.com/embed/IzTlJshRZNQ?rel=0" frameborder="0" allowfullscreen=""></iframe>
<p><strong>Milkmaid of the Milky Way</strong> is an award-winning&nbsp;<strong>point-and-click adventure game</strong> in rhyme that combines an exciting story with puzzles and exploration. What happens when a young milkmaid sees an alien craft in a fjord in 1920's Norway?<br></p>
<p><em>Deep in a fjord, a girl and her bovine,&nbsp;<br></em><em>Western Norway, nineteen-twenty-nine.&nbsp;</em></p>
<p><em>This is a story from Calf Ledge,&nbsp;<br>a small farm perched on a mountain edge.&nbsp;</em><br><br>It's 1920's Norway, and you play as Ruth, a young woman who lives alone on a remote farm at the end of a faraway fjord. You take care of your cows and make delicious dairy products that your friend sells in the closest town. But the dairy business is not going so well, and life on the farm is lonesome and hard. And at nights mysterious things keep happening to Ruth and her cows, making Ruth wonder: Is this the life she wants?<br><br>Then one day a giant, golden ship descends from the sky, forcing Ruth out on a journey that will change her life.<br><br><strong>Milkmaid of the Milky Way is a story about moving into the unknown, breaking free from the past, it's a story about age, life, death and time - but most of all it's a story about finding your own place in the universe.</strong><br></p>
<h3>Features</h3>
<ul><li>A lovingly crafted universe with hand-painted backgrounds combined with old school pixel art&nbsp;</li><li>An exciting, intriguing story filled with wonder</li><li>2-3 hour playtime</li><li>All dialogue and game text written in rhyme!&nbsp;</li><li>Good pacing, not tooooo difficult</li><li>English, French and Norwegian languages</li><li>Autosave and custom save games</li><li>Four earth-based cows</li><li>Absolutely no microtransitions, loot boxes or pay to win :)</li><li>Made with passion by one guy from Norway</li></ul>
<h3>System Requirements</h3>
<p><strong>PC:</strong><br>Requires a 64-bit processor and operating system<br>OS: Windows 7<br>Processor: Intel Core Duo<br>Memory: 2 GB RAM<br>Graphics: Intel HD 4000<br>DirectX: Version 9.0c<br>Storage: 1 GB available space<br>Sound Card: Built In</p>
<p><strong>Mac:</strong></p><p><strong>DOES NOT WORK WITH CATALINA!<br></strong>OS: OSX up to 10.4 - No Catalina Support<br>Processor: Intel Core Duo or better</p><p>Memory: 2 GB RAM<br>Storage: 500 MB available space</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/IzTlJshRZNQ?rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE5NDUuanBn/original/xwq6Vy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDAucG5n/original/myTMXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDEuanBn/original/SzVkBS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2MzkuanBn/original/QCjX%2FK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDMuanBn/original/nRHC%2Br.jpg]]
<p>MindExplorer is a single-player tabletop roleplaying game inspired by the&nbsp;aesthetics of educational materials from the 1990’s. You will explore a building&nbsp;<span style="color: inherit; font-size: inherit">constructed from your imagination during a dream you have one night and meet the characters that live inside it.</span></p>
<p>The game uses the Art Dice created by World Champ Game Co. You can download them for free <a href="https://worldchampgameco.itch.io/sink-to-swim" target="_blank">here</a> or use the digital version&nbsp;<a href="https://michael-klamerus.itch.io/dice-o-matic-2000" target="_blank">here</a>.</p>
<p>Influences for MindExplorer include the <a href="https://www.are.na/evan-collins-1522646491/utopian-scholastic" target="_blank" rel="nofollow noopener">Utopian Scholastic aesthetic</a>, the <a href="https://www.giantbomb.com/mindmaze/3030-25465/" target="_blank" rel="nofollow noopener">minigame in the Encarta</a> encyclopedia software series, and the games <a href="https://noroadhome.itch.io/alone-among-the-stars" target="_blank">Alone Among the Stars</a> and&nbsp;<a href="https://hanbandit.itch.io/enter-the-orb" target="_blank">Enter the Orb</a>. Cover art is by <a href="https://vonbednar.itch.io/" target="_blank">Fred Bednarski</a>.<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzM1LzQwNTk2ODQucG5n/original/fXSRpV.png]]

<p>Mini Loops a small pack of 5 seconds long music&nbsp;loops ready to be used anywhere, mostly though in games. It is under development. <strong>The pack contains 25 high quality wave and ogg files</strong> that can be&nbsp;looped at the moment; this is an on going project and this number will go up.</p>
<p><strong>This pack will eventually have a 100 loops</strong>, here is how the price will go up as more and more loops get added to it. If you want to own the entire pack early on, do grab it for the low price! Of course you can pay more than the minimum too if you feel like it!</p>
<ul><li><del>$1 for &lt;25 loops</del></li><li><strong>$2 for &lt;50 loops</strong></li><li>$3 for &lt;75 loops</li><li>$4 for 100 loops</li></ul>
<p>Preview the pack here -&nbsp;<a href="http://yadurajiv.com/mini-loops" style="font-size: inherit" rel="nofollow noopener">http://yadurajiv.com/mini-loops</a>&nbsp;(low birate mp3)</p>
<p><iframe style="width: 100%; height: 1000px" src="https://yadurajiv.com/mini-loops/itch_preview.html"></iframe></p>
<p>You can see the full license here -&nbsp;<a href="https://yadurajiv.com/mini-loops/License.txt" rel="nofollow noopener">https://yadurajiv.com/mini-loops/License.txt</a></p>
<p>Note:&nbsp;Most tracks are 5 seconds long, some are longer; 8 to 10 seconds longer.</p>
<p>Attribution:&nbsp;This product uses the graphic,&nbsp;Loop by Timofey Rostilov from the Noun Project</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Johy_jfrFBo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzI3NjA2OTEucG5n/original/B1JlMl.png]]
<p>In Mini Metro, you take on the task of designing the subway layout for a rapidly expanding city. Your city starts with three stations. Draw routes between these stations to connect them with subway lines. Commuters travel along your lines to get around the city as fast as they can. Each station can only hold a handful of waiting commuters so your subway network will need to be well-designed to avoid delays.</p>
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/287980/extras/steamSTore_03.jpg?t=1519005027" loading="lazy"></figure>
<p>The city is growing. More stations are opening, and commuters are appearing faster. The demands on your network are ever-increasing. You'll be constantly redesigning your lines to maximise efficiency. The new assets you earn every week will help immensely — as long as they're used wisely.
Eventually your network will fail. Stations will open too quickly. Commuters will crowd the platforms. How long the city keeps moving is up to you.
</p>
<h2>Key Features</h2>
<ul><li>Compelling, constructive, hectic, relaxed gameplay. If that makes sense. It doesn't though, aye? You just gotta play it.</li><li>Three game modes: Normal for quick scored games, Endless for stress-free sandbox play, and Extreme for the ultimate challenge.</li><li>Eighteen real-world cities to design subways for (London, New York City, Paris, Berlin, Melbourne, Hong Kong, Osaka, Saint Petersburg, Montréal, San Francisco, São Paulo, Seoul, Washington, D.C., Cairo, Istanbul, Shanghai, Mumbai, and Auckland). Each has a unique colour theme, set of obstacles, and pace.</li><li>Random city growth, so each game plays out differently. A strategy that proved successful last game may not help you in the next.</li><li>Each game's map is a work of art, built by you in the classic abstract subway style of Harry Beck. If you think it's a keeper, save it, tweet it, show it off or make it your desktop background!</li><li>Soundtrack by Disasterpeace</li><li>Colorblind and night modes.</li><li>Trains! Did we mention them yet?</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Zbk_msu-iYI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzg5LnBuZw==/original/ETsd4r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzkzLnBuZw==/original/KRPreh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzkyLnBuZw==/original/UIGvtZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyNDAwLnBuZw==/original/N84ACf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzk0LnBuZw==/original/OyEOyq.png]]
<p>Minit is a peculiar little adventure played sixty seconds at a time.&nbsp;</p>
<p>Journey outside the comfort of your home to help unusual folk, uncover countless secrets, and overcome dangerous foes, all in hopes of lifting a rather unfortunate curse that ends each day after just one minute.&nbsp;</p>
<p>Minit is a collaboration between <a href="http://twitter.com/kittycalis" target="_blank" rel="nofollow noopener">Kitty Calis</a>, <a href="http://twitter.com/jwaaaap" target="_blank" rel="nofollow noopener">Jan Willem Nijman</a>, <a href="http://twitter.com/jukiokallio" target="_blank" rel="nofollow noopener">Jukio Kallio</a> &amp; <a href="http://twitter.com/zerstoerer" target="_blank" rel="nofollow noopener">Dominik Johann</a>.<br></p>
<p><br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzExNDgyMzguZ2lm/original/EiqACF.gif" style="color: inherit" loading="lazy"><span></span><br></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XNVez4pXOCc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTcucG5n/original/5VyF9%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTQucG5n/original/BVSIAS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTYucG5n/original/MHIcu8.png]]
<p>Mixed Feelings is a game where you find yourself whisked away into a beautiful place that's strangely familiar. Join Peri, Silas, and Kahira as they take you through Asphodel Meadows, and fall deeper and deeper down the rabbit hole as you learn more about their lives, the world around you, and possibly...yourself.</p>
<p>If you like the music from Mixed Feelings, consider downloading the soundtrack for only $2.50!&nbsp;<a href="https://hiimcase.bandcamp.com/album/mixed-feelings-soundtrack" rel="nofollow noopener">https://hiimcase.bandcamp.com/album/mixed-feelings-soundtrack</a></p><p>If you enjoy the game, consider checking out some merch for it&nbsp;<a href="https://www.redbubble.com/people/spoonychan/shop" rel="nofollow noopener">https://www.redbubble.com/people/spoonychan/shop</a></p>
<p>CONTENT WARNING: Mixed Feelings has heavy subject matter that isn't quite explicit, but heavily implied, regarding grooming and abuse. Also, a slight epilepsy warning for certain quick flashes in the game. Player discretion is advised. Stay safe!</p>
<p>If you ever run into any bugs or anything, feel free to comment on the page, or even shoot me an email at spoonychan@gmail.com! Thank you so much!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4FtOOYNh2bw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDYucG5n/original/PdFTtn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDUucG5n/original/vZthn9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDcucG5n/original/dncFQa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDQucG5n/original/j3KWRB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDgucG5n/original/R3ix9m.png]]
<h1 class="text-center"><img src="https://img.itch.zone/aW1nLzU5Mzg4MjMucG5n/original/RvISus.png" loading="lazy"></h1>
<h1 class="text-center">Other Cool Games Like This</h1>
<p>If you like Mixolumia, you might want to check out some of these other great arcade puzzlers on Itch!</p>
<ul><li><a href="https://maxkrieger.itch.io/crossniqplus" target="_blank">CROSSNIQ+</a>&nbsp;- Slide rows and columns to clear crosses of color</li><li><a href="https://beanborg.itch.io/pushamo" target="_blank">Pushamo</a>&nbsp;- Push shapes around a field to clear blocks</li><li><a href="https://galaxytrail.itch.io/petal-crash" target="_blank">Petal Crash</a>&nbsp;- Slide blocks into each other to start chain reactions</li><li><a href="https://jerryverhoeven.itch.io/kavel" target="_blank">Kavel</a>&nbsp;- Find matches in specific formations to clear clusters of color</li><li><a href="https://raskalgames.itch.io/ekstase" target="_blank">Ekstase</a>&nbsp;- Build up blocks to be cleared in time with the music</li></ul>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTkzNDUuZ2lm/original/1kwCR9.gif" loading="lazy"><br></p>
<h1 class="text-center">Watch the Trailer</h1>
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/AC8AAkjTSTc?rel=0" frameborder="0" allowfullscreen=""><span class=""></span></iframe></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Mixolumia is a Shimmering Fountain of Good Brain Juice</h1>
<p>Mixolumia introduces a fresh twist on falling block puzzlers. Scintillating visuals and entrancing music respond to your input and evolve as you progress. Diamond blocks slide together on&nbsp;the gem-shaped board and explode in glittering chain reactions.</p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Swap the Soundtrack</h1>
<p>Mixolumia comes with music by davemakes, <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener">Josie Brechner</a>, and&nbsp;<a href="http://www.perennialsounds.com" target="_blank" rel="nofollow noopener">Jasmine Cooper</a>. Each track has unique sound effects that harmonize with the music, giving the game a totally different feel depending on which song you choose.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTk5MTguZ2lm/original/3RfI1p.gif" loading="lazy"></p>
<p>Musicians can even create and/or mod their own songs and sound effects for Mixolumia. There are a bunch available <a href="https://itch.io/c/1110361/mixolumia-music-packs" target="_blank">right here on itch</a>&nbsp;and more <a href="http://invite.gg/mixolumia" target="_blank" rel="nofollow noopener">in the Mixolumia Discord.</a> Check out the&nbsp;<a href="https://www.mixolumia.com/makingmusic/" target="_blank" rel="nofollow noopener">dynamic music system documentation</a> to learn more about making your own.</p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Remix the&nbsp;Palette</h1>
<p>Switch up Mixolumia's visuals by selecting from a wide range of lovely color palettes, or create and customize your own.&nbsp;Check out <a href="https://itch.io/t/914162/color-palettes" target="_blank">the game forums</a>&nbsp;and the <a href="http://invite.gg/mixolumia" target="_blank" rel="nofollow noopener">Mixolumia Discord</a>&nbsp;for more info.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTk5OTUuZ2lm/original/I6WWsG.gif" loading="lazy"><br></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Choose Your Experience</h1>
<p>Whether you want to chill out, or challenge yourself to intense, strategic gameplay, Mixolumia has a game mode to suit your mood.</p>
<figure><img src="https://img.itch.zone/aW1nLzM5NTk4MjcuZ2lm/original/GsC78y.gif" loading="lazy"></figure>
<p><br></p>
<h1 class="text-center">Gameplay</h1>
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/z27cwdUEmCk?rel=0" frameborder="0" allowfullscreen=""><span class=""></span></iframe></p>
<p class="text-center"><br></p>
<h1 class="text-center">Accessibility</h1>
<p>Mixolumia has options to adjust or turn off all of its effects individually so as to be as accessible to players as possible.</p>
<p><br></p>
<h1 class="text-center">Honors</h1>
<p class="text-center"><a href="https://igf.com/article/genesis-noir-leads-igf-finalists-four-nominations" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU5NDM1NDkucG5n/original/jhW%2F6w.png" alt="IGF 2021 Honorable Mention for Excellence in Audio" title="IGF 2021 Honorable Mention for Excellence in Audio" loading="lazy"></a></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Behind the Game</h1>
<p>Mixolumia is a game by&nbsp;<a href="https://twitter.com/davemakes" target="_blank" rel="nofollow noopener">davemakes</a>&nbsp;(they/them), with additional music by <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener">Josie Brechner</a> (she/they) and <a href="http://perennialsounds.com/" target="_blank" rel="nofollow noopener">Jasmine Cooper</a> (she/her).&nbsp;You can read about its creation in <a href="https://twitter.com/i/events/1224218410298441728" target="_blank" rel="nofollow noopener">this twitter moment</a>. Development was made possible by a bunch of lovely people <a href="https://www.patreon.com/davemakes" target="_blank" rel="nofollow noopener">via Patreon</a>.</p>
<p>The&nbsp;<a href="https://davemakes.bandcamp.com/album/mixolumia-ep" target="_blank" rel="nofollow noopener">game soundtrack is available on Bandcamp</a>&nbsp;and <a href="https://davemakes.itch.io/mixolumia-ep" target="_blank">right here on Itch!</a></p>
<p>Members of the press&nbsp;may want to check out our <a href="http://www.mixolumia.com/press/" target="_blank" rel="nofollow noopener">press kit</a>.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTkzNDUuZ2lm/original/1kwCR9.gif" style="max-width: 100%; font-size: 14px; text-align: center; background-color: rgb(255, 255, 255)" loading="lazy"><br></p>
<p><br></p>
<p><strong>IMPORTANT NOTE FOR MAC USERS: </strong>Please download and launch Mixolumia through the&nbsp;<a href="https://itch.io/app" target="_blank">Itch App</a>. Otherwise you may get a weird "Game not found!" error.</p>
<p><strong>LINUX USERS:</strong> The Linux version is provided as-is and&nbsp;I will do my best to support it, but I'm not a Linux expert.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AC8AAkjTSTc?rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NTUucG5n/original/%2BYq7v3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5OTAxNzkucG5n/original/PhpqaM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjQucG5n/original/lOdGiz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5OTUxMjAucG5n/original/gY2VWh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NTYucG5n/original/J570R1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjEucG5n/original/XZHGV%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjIucG5n/original/nhQlvG.png]]
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/aH7ARDqbMxI?rel=0" frameborder="0" allowfullscreen=""><span class=""></span><span class=""></span></iframe></p>
<h1>Mixolumia EP</h1>
<p>Original soundtrack for <a href="https://davemakes.itch.io/mixolumia" target="_blank">Mixolumia</a> featuring music by <a href="https://davemakes.itch.io" target="_blank">davemakes</a> and <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener">Josie Brechner</a>, with remixes by <a href="https://izunadrop.bandcamp.com/" target="_blank" rel="nofollow noopener">M Gewehr</a> and <a href="https://floatingfast.bandcamp.com/" target="_blank" rel="nofollow noopener">Gautam Srikishan</a>.<br><br>✨🔶🎶 Chill, entrancing electronic and ambient jams 🎶🔶✨</p>
<p><strong>Track&nbsp;Listing</strong>
</p>
<ol><li>Tessellation -&nbsp;<em>davemakes</em>
</li><li>Rush! -&nbsp;<em>Josie Brechner</em>
</li><li>Summer&nbsp;Shower -&nbsp;<em>Josie Brechner</em>
</li><li>Descending a Cosmic Well -&nbsp;<em>davemakes</em>
</li><li>Clear! -&nbsp;<em>M Gewehr</em>
</li><li>Lunar Lull (from my campfire on the moon) -&nbsp;<em>Gautam Srikishan</em>
</li></ol>
<p><strong>Formats:</strong></p>
<ul><li>MP3 (320 kbps and V0)</li><li>Ogg Vorbis</li><li>FLAC</li></ul>
<p><em>(if you don't know what all that means, MP3 V0 should suit you just fine!)</em></p>
<p><strong>BONUS TRACKS:</strong> Included are stems for Dave and Josie's tracks. These files are shared under a <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Creative Commons license</a> (Attribution-NonCommercial-ShareAlike) for folks who want to create their own remixes.<br></p>
<p>All other tracks are copyright their respective artists. However, if&nbsp;you want to use them for something, it wouldn't hurt to ask!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/aH7ARDqbMxI?rel=0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjM3OS81OTgwNjg1LnBuZw==/original/gLL656.png]]
<p>A gruesome murder interrupts an evening party at a secluded mansion and you are the prime suspect! Explore the mansion, search for clues, and interrogate the other guests as you strive to unmask the killer in this open-ended mystery.<span></span><br></p><h2>A murder is committed in a secluded mansion, and it's up to you to solve it.</h2>MMM is a visual novel adventure with an open-ended mystery that puts your deductive skills to the test. A murder occurs in a secluded manor, and if you can't find the killer in time, you just might take the blame for the crime yourself! Gather information and search the house for clues as you form your own conclusions about the evening's mysterious events.<h2>Features</h2><ul><li><strong>Multiple Endings</strong>: Finding the true killer is ideal, of course, but maybe building a plausible case against one of the other characters is good enough to get you off the hook!</li><li><strong>Unique and Compelling Characters:</strong> Play as Miss Fortune, a delightfully caustic anti-heroine who has already been widowed nine times. But this time, she didn't do it (really!), and she'll have to solve the mystery herself to prove it!</li><li><strong>Immersive</strong> <strong>Story</strong>: Sharply written dialog full of choices ensures a thoroughly immersive narrative.</li><li><strong>Voice</strong>-<strong>acting</strong>: Each character is fully voiced, with over 1700 voiced lines throughout the game!</li><li><strong>Beautiful</strong> <strong>Visuals</strong>: Detailed, searchable backgrounds and slick visual effects like rain, fog and variable lighting enhance the aesthetic experience.</li><li><strong>Time</strong> <strong>runs</strong> <strong>Short</strong>: The incompetent police are on their way. Better solve the mystery before they arrive, lest they come to their own <i>(wrong)</i> conclusions.</li></ul><p>MMM is available for Mac, Linux &amp; Windows computers.</p><p>It has full-English voice acting, and text in English, Italian or Spanish.</p><p>Download (or listen to) the OST for free <a href="https://soundcloud.com/enteiler/sets/mmm-murder-most-misfortunate-ost" target="_blank" rel="nofollow noopener">here</a>!</p><p>We're the Foolish Mortals, a small indie team based in the flat and desolate wastes of Saskatoon, Saskatchewan, Canada. Read more about the game and us here: <a href="http://www.foolish-mortals.net/mmm" rel="nofollow noopener">http://www.foolish-mortals.net/mmm</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/BUlDO2Y4A8Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUzLmpwZw==/original/Phmc3x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUxLmpwZw==/original/ZgQ%2Boh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUwLmpwZw==/original/um9xv%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUyLmpwZw==/original/q9cu8r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ5LmpwZw==/original/Vy4m0g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ4LmpwZw==/original/mWkUy7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ3LmpwZw==/original/J30VbF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ2LmpwZw==/original/Z7xlZH.jpg]]
<p>The package includes: </p>
<ul><li>Wall (A) [1,136 tris]&nbsp;</li><li>Door frame (A) [584 tris]&nbsp;</li><li>Corner (A) [762 tris]&nbsp;</li><li>Floor (A) [500 tris]&nbsp;</li><li>Door (B) [513 tris]&nbsp;</li><li>Ceiling (B) [60 tris]&nbsp;</li><li>Cactus (B) [1,842 tris]&nbsp;</li><li>Regeneration unit (C) [2,232 tris]&nbsp;</li><li>Storage unit (C) [685 tris]&nbsp;</li><li>Generator [50,522 tris]</li></ul>
<p>The letters in parenthesis indicate what assets share textures, there're 3 packs of 2048x2048px PBR textures, the generator has its own set of textures.<br><br>The regeneration unit is a table with bottles, I also included the table and bottles as separate objects.<br><br>There's also a lamp there, that one is not really optimized but I just added it for the renders, wasn't really part of the pack.<br><br>The generator has a rig so you can rotate the fan and move the fan cover.<br><br>If this sells 10 times I'll add a good lamp, and another object to it (reviewers can submit an idea I'll take into account). At 20 ratings I'll add another object.</p>
<p><a href="https://www.artstation.com/artwork/ZWGOX" target="_blank" rel="nofollow noopener">Artstation post</a><br><br></p>
<div class=""><iframe width="640" height="480" src="https://sketchfab.com/models/6f1a46bc2626488cbe152a00f02e1f15/embed" frameborder="0" allowfullscreen=""></iframe>
<p>
    <a href="https://sketchfab.com/models/6f1a46bc2626488cbe152a00f02e1f15?utm_medium=embed&amp;utm_source=website&amp;utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener">Modular Cabin</a>
    by <a href="https://sketchfab.com/no_opponent?utm_medium=embed&amp;utm_source=website&amp;utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener">Erika Moya</a>
    on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener">Sketchfab</a>
</p>
</div>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY3MDExLzc3MzE0OS5wbmc=/original/fb6w8C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3MDExLzc3MzE1MC5wbmc=/original/Wb9CzM.png]]
<p><strong>NOW AVAILABLE ON: Android, iOS, Windows, and MacOS.<br><br>monad</strong> is meant to be experienced in a dark, quiet room, on a large screen with a surround-sound system or headphones, and with a multi-touch screen for input.<br><br><strong>monad</strong> was initially conceived as an experiment with space, wherein at the very moment that the player engaged with the system, a white circle began to grow, unrestrained, until it occupied the entire screen, the entire space. &nbsp;Leaving no room for agency.<br><br>The black circle came about as a means for the player to regain space.&nbsp; The soundscape came about in order to give more dimension to the feelings that the visuals were already evoking.<br></p>
<p><strong>monad</strong> is made with <a href="https://www.love2d.org/" rel="nofollow noopener">LÖVE</a>, with help and support from that community as well as <a href="http://louisvillemakesgames.org/" rel="nofollow noopener">Louisville Makes Games</a>.&nbsp; <br></p>
<p><strong>monad </strong>has been exhibited at:<br></p>
<p>Indie Games and Art Social - <a href="https://louisville.aiga.org/" rel="nofollow noopener">AIGA</a> Design week, September 2018</p>
<p>Bit Bash, August 2019</p>
<p>Kentucky State Fair - Design Web Digital and Interactive Art Exhibit, August 2019</p>
<p>EGX 2019 - Left Field Collection, September 2019<br><br><br><br><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7-NrV1mk0K0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4NjYuanBn/original/r2qOM0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4MzguZ2lm/original/rU2YcZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzI0MTk3NDYuanBn/original/w598bw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM2OTIuZ2lm/original/mR7h%2FQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM3NzkuanBn/original/PIMEck.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4MzEuZ2lm/original/QYsbvY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM3NzguanBn/original/LmnP86.jpg]]
<p><strong>Over 100 copies sold! To celebrate,&nbsp;Monster Manifest gets a permanent price drop to&nbsp;$9.99. Thanks for everyone's support. Enjoy your adventures!</strong><br></p>
<p>A collection of 300+ creatures from the SRD5 adapted for use in Quest RPG.<br></p>
<p>Regardless of whether you’re seeking a bridge to Quest from another tabletop roleplaying system, or you are new to TTRPGs altogether — this book is full of NPCs for your games.</p>
<p>Monster Manifest also includes a toolkit you can use to generate your own NPCs — either adapted from other TTRPG systems or built from scratch.</p>
<p><em>"If you're going to run D&amp;D adventures or setting material in Quest, and don't want to cheap on conversions, consider this book essential." — <a href="https://twitter.com/levikornelsen/status/1301221298836627456" target="_blank" rel="nofollow noopener">Review from&nbsp;Levi Kornelsen</a>&nbsp;</em></p>
<p>Includes a&nbsp;beautiful full color&nbsp;cover&nbsp;as well as 14 interior black &amp; white&nbsp;chapter splash page illustrations. A second printer friendly&nbsp;PDF with a black and white cover is also included.<br></p>
<p>Written, illustrated, designed, &amp; edited by&nbsp;J.N. Butler.</p>
<p><strong>The NPC stat blocks in this book require the digital or physical&nbsp;Quest Game Book for referencing player role abilities assigned to certain NPCs.</strong></p>
<p>Files included with this download:</p>
<ul><li>Monster Manifest PDF</li><li>Monster Manifest PDF B&amp;W (Printer Friendly)</li><li>Monster Manifest&nbsp;rich and plain text files (Screen Reader Ready)</li><li>Quest NPC Stat Generator Portrait and Landscape PDFs&nbsp;(Printer Friendly)</li><li>Quest NPC Stat Generator rich and plain text files&nbsp;(Screen Reader Ready)</li><li>Open Game License PDF</li></ul>
<p>This work includes the<strong>&nbsp;</strong><strong>Quest NPC Stat Generator</strong>&nbsp;by&nbsp;<a href="https://jnbutler.art/" style="font-size: inherit" rel="nofollow noopener">J.N. Butler</a>&nbsp;licensed under&nbsp;<a href="https://creativecommons.org/licenses/by/4.0/" style="font-size: inherit" rel="nofollow noopener">CC BY 4.0</a>. Available <a href="https://jnbutlerart.itch.io/quest-npc-stat-generator">here</a>.</p>
<p>This work uses material from the Quest Creators Resource. The Quest Creators Resource by The Adventure Guild, LLC is licensed under&nbsp;<a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener">CC BY 4.0</a>. For more information about Quest, please visit&nbsp;<a href="https://www.adventure.game/" rel="nofollow noopener">www.adventure.game</a>. Additionally, please&nbsp;<a href="https://www.adventure.game/community-code" rel="nofollow noopener">read Quest’s Community Guidelines</a>&nbsp;to help create experiences that are positive and fun.</p>
<p>This work also uses material from the <a href="https://dnd.wizards.com/articles/features/systems-reference-document-srd" rel="nofollow noopener">System Reference Document 5.1 (SRD5)</a> under the Open Gaming License. A copy of the full text of the Open Game License is included with the download of this work.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQ1MDk2MzYuanBn/original/ZSm6fd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDcucG5n/original/Z%2FGtoR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDEucG5n/original/txs2Bx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDQucG5n/original/WojqYG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDYucG5n/original/sIRvsz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQ1MDk2MzEucG5n/original/i2MpMy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDUucG5n/original/nPEKb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDIucG5n/original/xo0jqg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMTUucG5n/original/R96gZN.png]]
<p><em>I knew college would be a different experience, but I didn't expect it to be a different world!<br></em></p>
<p>I should have known something was up when the main campus burned down and I had to start attending school in a creepy haunted castle. As it turns out, the reputation is deserved - the place is full of monsters nobody else seems to be able to see.</p>
<p>It doesn't take long for them to notice me, either. But... not in the way you'd expect monsters to notice a human in their midst. <br><br>What do I do? Let an alkonost take me to tea? Or preserve the stability of the barrier between worlds? Even if the monster world is drawing me in, I can't help but feel like something is wrong...<br><br>And maybe I can fix it...<br><br><em>"Monstrata Fracture" is currently in development. We'll be updating it every couple of months with new content and characters. Thanks for playing!</em><br></p>
<p><strong>Currently Features:</strong></p>
<ul><li>5 cute monsters to date!</li></ul>
<ul><li><p>14 backgrounds with 21 total variations!<br></p></li><li><p>35k words! More on the way!</p></li><li>Blinking and speaking animation!&nbsp;</li></ul>
<ul><li><p>Questionable life choices!</p></li><li>Customizable protag!</li></ul>
<ul><li>Pronoun options!</li></ul>
<ul><li>Phone calls with your mother!</li></ul>
<p><strong>Recommended for ages 16 and up.</strong><br></p>
<p><strong>Content Warnings:</strong></p>
<ul><li><p>Death: player character</p></li><li><p>Fantasy racism</p></li><li><p>Slavery</p></li><li><p>Unhealthy relationships</p></li><li><p>Alcohol</p></li></ul>
<ul><li><p>Language</p></li><li>Sexual themes</li></ul>
<p><strong>Glasses DLC:<br></strong>We now have a bonus file for anyone who'd like to support this game's development! <br>With it, you can add glasses to any or all of the route characters.&nbsp;</p>
<p><em>To install:<br></em>Download the DLC file, without unzipping/extracting it.&nbsp;<br>Open the in-game Preferences menu and select 'Load DLC' then select the DLC .zip file from wherever you have saved it-- The game will reload to add the DLC. <br><em>Please contact us if you encounter any problems, this is a beta feature! <br>(It has been tested on Windows and Linux but not Mac, so especially let us know if you have trouble using it on Mac!!)</em></p>
<p><em>If the above method doesn't work, <a href="https://pastebin.com/gVZ6LqT7" target="_blank" rel="nofollow noopener">click here for manual instructions</a>.<br></em></p>
<p>If you'd prefer to receive physical items in exchange, we have a <a href="http://astralore.com/merch" target="_blank" rel="nofollow noopener">merch shop</a> on our website:<br></p>
<figure><a href="http://astralore.com/merch" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzE5ODQwNjgucG5n/original/g88LvE.png" alt="Merchandise photos" title="Merchandise photos" loading="lazy"></a><br></figure>
<p>And if you'd prefer to financially support in a more long-term sense, we also have a <a href="http://patreon.com/astralore" target="_blank" rel="nofollow noopener">Patreon</a>!
</p>
<p><a href="https://www.patreon.com/astralore" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzE3MTgwODgucG5n/original/HQO%2FqX.png" alt="Become a Patron button" title="Become a Patron button" loading="lazy"></a></p>
<figure><br></figure>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDcucG5n/original/mxTonE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE0MTAzMjkucG5n/original/FmIQGc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDYucG5n/original/UHPTRl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDkucG5n/original/od2oqD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDUucG5n/original/wxA8%2Bj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE5NDI0MzMucG5n/original/3hgeGy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE5NDI0NDQucG5n/original/x48rhf.png]]
<p>Moon and Lou is an interactive bedtime story about friendships that come to be, mutual understanding and hidden feelings.</p>
<p>Explore the story by being curious and clicking things around.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMjAuanBn/original/%2BsGfDn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMDIucG5n/original/O8KS3U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMjEucG5n/original/gczxZG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMzEuanBn/original/sLwAwc.jpg]]
<h3 style="color:#FFFFFF">Show Your Personality</h3>
<p>
	<strong>Moon Hunters</strong> is a 1 to 4 player co-operative action personality test RPG in a rich, ancient world that's different every time you play. Build your mythology as every action and choice contributes to how you're remembered, as a constellation in the night sky.
</p>
<h3 style="color:#FFFFFF">A Hero's Journey</h3>
<p>
	Play out 5 days from different angles to uncover new sides to characters, conflicts, and narratives. Try out all 4 player hometowns and 6 player character classes, each with their own abilities and randomly available upgrades.
</p>
<h3 style="color:#FFFFFF">Earn Your Reputation</h3>
<p>
	On your search for the missing Moon goddess, you will travel the world with your fellow Hunters and become a living legend for your deeds. How will you be remembered by your tribe in generations to come?
</p>
<p>
	<br>
</p>
<hr>
<p>
	<u><br>
	</u>
</p>
<p>
	<u>Awards:</u><br>
</p>
<ul>
	<li>Indie MegaBooth - PAX Prime 2015 and PAX East 2016 Showcase</li><li>Indie Prize Europe 2016 Winner: Most Promising Game in Development</li>
	<li>Indie Prize Europe 2016 Finalist: Critic's Choice Best in Show, Best Multiplayer</li>
	<li>Montreal International Game Festival - Narrative Design Award</li>
	<li>Curse PAX East 2015 - Best Co-Op Experience</li>
</ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/UdGOvzXa4N8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE2LnBuZw==/original/e%2F9%2FTH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI0LnBuZw==/original/NVs84X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI1LnBuZw==/original/IdC8C7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjIyLnBuZw==/original/8dwQUp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjIzLnBuZw==/original/xlhKHi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI2LnBuZw==/original/AHBLc7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE5LmpwZw==/original/h%2BTgaa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE3LnBuZw==/original/rxJvro.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE4LnBuZw==/original/8yGxpT.png]]
<p><strong>The Council of Sky Elders, responsible for all things "sky" and the safety of the nation that lies beneath it, have issued a decree:&nbsp;</strong></p>
<p><strong>We are going to be the first to land on the Moon.&nbsp;</strong></p>
<p></p>
<p><strong>MOON'S SHOT</strong> is an&nbsp;adventure for Troika! for 2-5 players, suitable for new players.&nbsp; Your players will assemble their motley crew to serve as moonanauts: the first people to ever travel to the Moon!<br></p>
<p>However:&nbsp;it turns out getting to the moon is&nbsp;<em>really difficult.</em> So difficult in fact that the Council's technical folks opted out of it, deciding it would be much easier to build a false Moon underground in a cave and hope the moonanauts don't catch on.</p>
<p>How long will it take them to figure out the truth? Will they care when they do? Will they ever make it back home when they don't really know where they are?</p>
<p><strong>Inside</strong>:&nbsp;20 pages of wonder!&nbsp;Artwork from <a href="https://twitter.com/rapidpunches" target="_blank" rel="nofollow noopener">RAPIDPUNCHES</a> and <a href="https://www.patreon.com/evlynmoreau/" target="_blank" rel="nofollow noopener">Evlyn Moreau</a>! Roll tables! An elephant with the word MOON painted on it! A nagging sense of unease!</p>
<p>Written for the TroikaFest! 2021 game jam,<strong>&nbsp;MOON'S SHOT</strong>&nbsp;is an independent production by Michael Van&nbsp;Vleet and is not affiliated with the Melsonian Arts Council.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzM2MjIzLnBuZw==/original/gYYKxQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzM2MjI2LnBuZw==/original/woKjKJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzU4MDU0LnBuZw==/original/FlWvZS.png]]
<p><strong>Viva La Luna!</strong></p>
<p>"You can't fight city hall" is a bunch of b.s. There are literally hundreds of ways to take down an oppressive regime. MoonPunk is filled with them.<br></p>
<p>MoonPunk is a standalone political action roleplaying game for 3-7 people. It also contains real-world guides to direct action. Play as punks on a retrofuturistic Moon fighting the good fight against oppression. Use subversive action to take down The Authority, spread the truth about corruption, protest the corporate, or just punch some moon nazis.</p>
<p>This book contains everything you need to start fighting the power.</p>
<p>Inside you will find:</p>
<ul><li>12 punk playbooks, and how to make your character.</li><li>9 basic moves for navigating and narrating the world.</li><li>26 pieces of digital art.</li><li>A punk's guide to direct action.</li><li>Everything you could need to run a game as "The Authority."</li><li>4 example modules to run your game.</li></ul>
<p><strong>So sew on some patches, spike up your hair, and turn it up to 11. The show's about to start.</strong></p>
<p>Want to try before you buy?&nbsp;Download the quickstart &nbsp;<a href="https://wannabegames.itch.io/moonpunk-quickstart" target="_blank">for free here.</a></p>
<p>Like this book so much you want a print copy?&nbsp;Buy it at <a href="https://www.drivethrurpg.com/product/308781/MoonPunk" target="_blank" rel="nofollow noopener">DriveThruRPG.</a><br></p>
<p><strong>Roll20 now also has MoonPunk on its website!&nbsp;You can play there without downloading anything!</strong></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMzMucG5n/original/dorBby.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMjgucG5n/original/WFgw8L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMzAucG5n/original/mS3PNH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMjAucG5n/original/MVOEpf.png]]
<p>Explore forgotten worlds and deadly dungeons with your companions, make difficult choices and endure their consequences. Solve intriguing puzzles to open doors and obtain key artifacts.&nbsp;&nbsp; Have fun!</p>
<p><br></p>
<p><strong>Story</strong></p>
<p>Moonstone is a pretty mountain village that owes its riches to a famous mine, that has recently become a source of major trouble for the inhabitants. Since part of it caved in due to a mysterious explosion, the village is haunted at night by dangerous creatures that have already caused one casualty: Terence the Baker.&nbsp; With your companions, you decide to help the villagers (for a handsome reward of course as nobody works for free nowadays) to get rid of said monsters. What starts as a simple "cleaning operation" of the mines quickly evolves into an epic drama about lost civilizations, historic guilt, race disputes, and difficult choices about loyalty, justice, and trust. And yes, there is also a love story or two, depending on your choices.</p>
<p><br></p>
<p><strong>What can you do in this game?<br></strong></p>
<p>In 7 hours of gameplay you can enjoy interesting tales, play detective and solve a hideous crime, fight deadly enemies, solve intriguing puzzles, play minigames, win/lose your money at gambling, loot chests, trade, open a bank account, open doors with picklocks.&nbsp; Make tough choices with not always foreseeable consequences.</p>
<p><strong>How will it end?<br></strong></p>
<p>This depends entirely on your choices. There are three possible ends:&nbsp; <strong>happy</strong> end,&nbsp;<strong> bad</strong> end, and<strong> death</strong>.&nbsp; Death means "game over" - you won't even have the doubtful pleasure of seeing the bad end ...</p>
<p><br></p>
<h3>Free demo !&nbsp; &nbsp; Play the first hour of the game for free!</h3>
<p><strong>Moonstone Deep</strong> is the first part of the "Ryan Manolesta Trilogy".&nbsp; Did you like the game? Don't miss the second part,&nbsp; <strong>Benjamin of Blackstone Edge</strong>&nbsp; (released May 2018)!</p>
<p><br></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6CKNtlEr-Gk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5Mi5wbmc=/original/xJKkmW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5NC5wbmc=/original/MFrzxr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2Lzg2Mjc3MC5wbmc=/original/r1E6kp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2Lzg2Mjc3MS5wbmc=/original/duMG%2Bz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5OC5wbmc=/original/liNBaM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTcwNS5wbmc=/original/LtvOGT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTcyMS5wbmc=/original/17Peyq.png]]
<p>Mom and Dad have finally put Mop Boy in charge of keeping their beloved pizzeria clean. But with grease monsters running amuck and a crooked&nbsp;health inspector on their tail, it's gonna take the whole family to keep the restaurant afloat.<br><br>(PLease don't kill us for copying the rest from our old demo)<br></p>
<p>The game centers around Mop Boy, a kid whose family owns and lives above a pizza restaurant, Doughboys (based on our team member’s family-owned restaurant of the same name).&nbsp;
While the other members of the Boy family have normal restaurant jobs (running deliveries, cooking, taking orders), he’s left battling the grease lingering from the daily grind.
Upstairs, Mop unwinds and replenishes lost health while bonding with his family.
</p>
<p><strong>
Controls:</strong>
</p>
<ul><li>Movement: arrow keys
</li><li>Jump: Space
</li><li>Action/ Attack: F
</li><li>Charge Attack: Hold F
</li><li>Pause / View Mission: Esc
</li></ul>
<p>Follow us on Twitter:&nbsp;<a href="https://twitter.com/MopBoyGame" rel="nofollow noopener">twitter.com/MopBoyGame</a>
and Instagram!:&nbsp;<a href="https://www.instagram.com/mopboygame/" rel="nofollow noopener">instagram.com/mopboygame</a>
</p>
<p><em>Thanks for playing our Mop Boy Demo! There's more on the way, so stay tuned!</em>
</p>

[img width=500 [https://img.itch.zone/aW1nLzU4NjA5MDEuZ2lm/original/3pa5RS.gif]]
<p>Motel 666 is a survival horror game made in the Unity engine. In order to succeed, players will need to search rooms for items and battle enemies throughout a haunted motel.</p>
<p>CONTENT ADVISORY:</p>
<p>Motel 666 features some mature subject matter, including discussion of death, suicide, and acts of violence. </p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk3LnBuZw==/original/0qqKyB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk4LnBuZw==/original/v4FG0Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0NDAwLnBuZw==/original/wlGrr5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk1LnBuZw==/original/%2B7VagU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk5LnBuZw==/original/AVrsef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk2LnBuZw==/original/8cfn3A.png]]

<p style="text-align: center"><img src="http://www.harmonyzone.org/Pics/MCPromo_Map.png" loading="lazy"></p><p>Explore a field of caves and ruins under the benign aspect of the Mouse Corp. A mysterious 3d adventure awaits your survey. It's Mouse Corp. - what are friends for?</p><p>Produced in two months seperated by one year. Pay what thou wilt is the whole of the law so feel free to try before you buy. Payment is optional but helps fund further games... More than the world has ever seen....</p><p>Music by NEW VADERS. Game by Stephen Gillmurphy. This started out from a desire to just make something pretty and is best interpreted from this angle. Thank you for looking at our video game.</p><p style="text-align: center"><img src="http://www.harmonyzone.org/Pics/MCPromo_Donations.png" loading="lazy"></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwMzgucG5n/original/x653ZG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwMzkucG5n/original/n1%2FgHe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwNDEucG5n/original/a6Uikd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzE0MzQucG5n/original/XiPDn%2B.png]]

<h1>Multilytheus</h1>
<p>an abstract puzzle game about navigating space</p>
<p>sound design: Jay Vachon (<a href="https://jayvachon.com/" rel="nofollow noopener">https://jayvachon.com/</a>)</p>
<p><em>if you like this game, check out my new real-time puzzle game <a href="https://phoenixup.itch.io/time-bandit">Time Bandit</a> (coming soon), and if you want to really help me out, <a href="https://store.steampowered.com/app/1481910/Time_Bandit/" rel="nofollow noopener">wishlist it on Steam</a> &lt;3
</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Nfz6rlw47CU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDgucG5n/original/f%2Fnm7b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDcucG5n/original/f7HE01.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTIuanBn/original/LTvt8U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDkucG5n/original/5xjwt7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTAucG5n/original/96vFc%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTEucG5n/original/ba91Se.png]]
<p>are you strong enough? venture where only the strongest come out alive... into the muscle world.</p>
<p>delve into its secrets with the power of muscle</p>
<p>redeem yourself through exercise</p>
<p><em>believe</em></p>
<ul><li>an enormous muscle world to explore!</li><li>tense muscle action!</li><li>secret locations and endings!</li><li>inspiration!</li></ul>
<p>controls:<br>- wasd/arrow keys/left stick : move<br>- mouse/right stick : look around (only in the muscle world)<br>- control/button 1/left click : jump/let go of the ceiling<br>- alt/button 2/right click : kick</p>
<p>(a controller is recommended)<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MTEucG5n/original/GelEQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MDkucG5n/original/clKkLl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MTAucG5n/original/1G6JqL.png]]
<h3>UPDATE: This light novel has a sequel now!</h3>
<figure><a href="https://zandravandra.itch.io/therapycatgirltabbi" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ2MTcucG5n/original/fLLqqG.png" style="color: inherit; font-size: inherit" loading="lazy"></a><span></span><br></figure>
<p><a href="https://zandravandra.itch.io/therapycatgirltabbi" target="_blank"><strong>You can check it out right here!</strong></a></p>
<p>Gods aren’t exactly common, but there are a lot of them, it turns out. If a person sees a god, it usually means the latter is in trouble—the modern world has many mysteries the gods haven’t completely figured out. But some charitable person is inevitably around to help out these flustered deities, who then invariably grant these kind souls a wish.<br></p>
<p>And if a lot of wishes are being granted at once, well, it's easy to lose track of what you want.</p>
<p>Cat Wishes is my second light novel, this time about a small group of friends, divine intervention, and the ups and downs of their day to day life as they adjust to some pretty dramatic changes. As always, it's full of personal growth, self-discovery, and a lot of gender feels.</p>
<p>Please enjoy, and let's keep making wonderful things together.</p>
<p><em>This is a light novel of 64 pages with 10 interior black &amp; white illustrations.</em></p><h3>Liked the light novel?</h3><p><a href="https://zandravandra.itch.io/catwishes-artbook" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ2ODEucG5n/original/uj%2F30d.png" loading="lazy"></a><br></p><p><strong><a href="https://zandravandra.itch.io/catwishes-artbook" target="_blank">Check out the art book</a> for never-before-seen art, author commentary, and a peek at where the characters are after the events of the story!</strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA3NDkyLzk3NTMwNC5wbmc=/original/ezGiVw.png]]
<p>If you need constant rewards, endless powerups, crisp vector graphics, achievements, online challenges, multiplayer or 3d.. this is not the game you are looking for. On the other hand, if you love old style, pure of heart out-and-out arcade gaming, you and My Nuclear Octopus may just be on the verge of a beautiful friendship.</p>
<p>NOTE: This version is different to the one on Steam, in that it doesn't include an online leaderboard.</p>
<h3>Features:</h3>
<p>** NOW INCLUDES OUYA APK SIDELOADABLE&nbsp;VERSION!!!&nbsp;&nbsp;**</p>
<ul><li>Now includes a Steam key, too!</li><li>Visuals that will make your eyes blow up (NOTE: NOT recommended for folks with any photosensitive medical conditions)</li><li>PC version included in the .zip</li><li>Awarded review scores of 8/10 from ZOMGPLAY and 8/10 from United Front Gaming</li><li>A control scheme designed for keyboard play or an xbox 360 controller</li><li>Retro chunky pixel graphics</li><li>Multi-coloured explodopus!!</li><li>Local leaderboard (not online!)</li><li>Xbox360 wired controller support</li><li>80's arcade style sound effects</li><li>A giant eyeball in the middle of the play area</li><li>Octopi</li></ul><p>
</p><p>The story so far:<br></p>
<p>Octopi is under attack! A space dimension portal has been opened and strange beasts from the 1% dimension are getting through.</p>
<p>It's all up to my N<span style="">uclear Octopus to save </span><span style="">the universe, using his </span><span style="">magical ink to send them </span><span style="">back to their own dimension.</span></p>
<h3>Instructions:</h3>
<p>-HOLD DOWN the fire buttons, TAP the movement buttons<br>-Destroy all things coming out of the portal<br>-Collect the things that look like pills. They are steroidipus and they give you rapid fire<br>-Get a high score<br>-You get one multicoloured explodipus per level (think smartbomb) to use when there's nothing left but hope.<br>-Reach the end of the game and defeat the boss</p>
<p><strong>Keyboard controls</strong></p>
<p>-Use A and D to choose firing direction left or right.<br>-UP and DOWN arrow keys move.. yep, up and down.<br>-Press SPACE to activate multicoloured explodipus. You get one per level.</p>
<p><strong>Xbox 360 controller controls</strong></p>
<p>-Hold right stick left or right to choose fire direction.<br>-Press buttons A and B to move up and down.<br>-Press X to activate multicoloured explodipus. You get one per level.</p>
<h3>Closing arguments:</h3>
<p>Walking into an amusement arcade during the 1980's overwhelmed the senses. The audio from each arcade machines screamed out for attention, each one fighting to grab the passer by, to feed it with coins.</p>
<p>My Nuclear Octopus is what might have happened had I been born a few years earlier and landed a job designing arcade games in 1984. It's loud, it's simple to pick up and it's tough as old badgers. The graphics are crunchy old sprites, something you might see in an old Commodore 64 game, a BBC Micro game or maybe even a 1980's arcade.</p>
<p>The logic is simple - you play for a few minutes, you get as far as you can, the game ends. Next time, you play again and try to beat your score. Somewhere along the way, the rest of the world disappears and you find yourself one with the Octopus, in some kind of harmony with the game as, for a short time at least, 100% of your focus goes into keeping back the marauders from another dimension. </p>
<p>Lose yourself for a short time, just like we did in the old days.</p>
<h3>What the critics say:</h3>
<p>If you really need to hear it from someone else how much fun My Nuclear Octopus is, try an 8/10 from ZOMGPLAY:</p>
<p><a href="http://zomgplay.com/2013/12/09/review-my-nuclear-octopus-pc/" target="_blank" rel="nofollow noopener">ZOMGPLAY.COM</a></p>
<p>Or another 8/10 from United Front Gaming:</p>
<p><a href="http://www.unitedfrontgaming.com/pc/post/2089/my-nuclear-octopus" target="_blank" rel="nofollow noopener">United Front Gaming</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MCKRZDs0w1Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc2LmpwZw==/original/%2FWESFT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc3LmpwZw==/original/JVqbFr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc4LmpwZw==/original/xjlCRZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc5LmpwZw==/original/2qvCs4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzgwLmpwZw==/original/Y38dG9.jpg]]
<p><strong>My Welcomed Guest</strong> is a solo game about being trapped in Faerie and trying to bargain your way home. Throughout the game you will be answering questions and potentially accruing Taboo, which is an indicator of faerie taboos you may have breached. Sometimes without you knowing what action it was that directly broke the taboo. The game will be played over five acts.</p>
<p>This game was created as part of the <a href="https://itch.io/jam/short-and-easy-jam">Short and Easy</a> game Jam.</p>
<p>You will need some additional materials:<br></p>
<ul><li>Something to write on. <ul><li>You can print out the game and write directly on the paper, use a journal, an electronic source, or something else that suits your fancy.</li></ul></li><li>Something to write with.<ul><li>If you have a favorite pen or pencil, get that. If not, anything will do, a pen, pencil or crayon.</li></ul></li><li>A six sided die. <ul><li>There are many electronic versions available if you don’t have a d6 easily accessible.</li></ul></li><li>A place to accrue Taboo marks.<ul><li>This can the corner or back side of a page, an index card, a sticky note, or a bowl to hold glass beads. The important thing is to know how many Taboo marks you have accrued.</li></ul></li></ul>
<p><br></p>
<p>I believe in paying people for their work. This game is priced at $3, but if that isn't something you can do right now, in the spirit of Faerie bargains, send me an email (dawnbeargames at gmail) and I'll send you a copy. It will come with the caveat, that&nbsp;if you play it, just let me know you played it. No need for a review or feedback (though I would love feedback), just to know that you played it. I won't promise to get you the game immediately, but I will likely get back to you with in a couple of days. <br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk1Njg1LzE5NjAxNTkucG5n/original/vPILdT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk1Njg1LzE5NjAxNjEucG5n/original/AsXdbP.png]]
<p>The MYNT system is designed to focus on storytelling through roleplaying. It can work with any setting. Combat is possible but it is not the focus of this system. It was designed to get players doing more than swinging swords or shooting blasters with the aim of beating a particular number in order to succeed. Action and adventure occur through twists and not continued success on the part of the hero.</p>
<p><span class=""></span>
</p>
<p><span class="">Think Han Solo, Indiana Jones or Jack Sparrow having to talk, trick or fight their way out of a situation and being smart about it, but things never quite going as they planned. This system is designed for just such events. (How sad is it that I can only think of male characters that act in this manner.)</span></p>
<p><img src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" loading="lazy"><br></p>
<p><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTUyNzczLzEzNDg4NjMuanBn/original/DJo9gA.jpg]]
<p><em>MΣTΔ</em> is an old school inspired role-playing game of metalanguage, metagaming, and metaphysics, to be played alone or in a group, with or without a gamemaster.</p>
<p>"MΣTΔS"&nbsp;is also how the player characters are called.&nbsp;A MΣTΔ is an individual disembodied mind, part of the ΩMNIMΣTΔ collective, an&nbsp;extremely evolved intelligent species of dimensional travelers that transcended time&nbsp;and space. Groups of MΣTΔS incarnate in various worlds, in order to experience the&nbsp;universe and know themselves.</p>
<p>To play <em>MΣTΔ</em>, the player or players will need this book, pen and paper, some copies&nbsp;of the different sheets, and at least one die with 4, 6, 8, 10, 12, 20, 24, and 30 sides&nbsp;(or a way to roll those dice digitally). Other old school RPG books may come in hand.</p><p><a href="https://liberludorum.com/2021/05/31/gaming-the-meta/" target="_blank" rel="nofollow noopener">Check out a&nbsp;review of&nbsp;MΣTΔ&nbsp;by Līber Lūdōrum here</a>.</p>

[img width=500 [https://img.itch.zone/aW1nLzUyNjk2NzAucG5n/original/Sv%2Bzie.png]]
<blockquote class="text-center">This is a demo of Nainai’s Recipe, we are still in development! You can find us&nbsp;<a href="https://twitter.com/NainaiRecipe" target="_blank" rel="nofollow noopener">@NainaiRecipe</a>&nbsp;where we do progress updates and share tech &amp; art stuff!</blockquote>
<p class="text-center">Open your fridge, choose the ingredients, examine, chop, seasoning, heat, and taste them. During the lockdown, you start to learn how to cook from your dear grandma.<br></p>
<p class="text-center"><em>Nainai’s Recipe</em> is a game that captures the cooking feeling in stylized visuals. And a family story about how we lived together in a special way during 2020.<br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzYwMDE2OTgucG5n/original/p%2BUfNk.png" width="200" style="margin: 0 auto; padding-left: 44px" loading="lazy"><br></p>
<ul><li><strong>Maximum control</strong>&nbsp;- no preset ingredient slice texture, no performance-oriented steps,&nbsp; we want you to enjoy&nbsp;cooking a meal from start to finish.</li><li><strong>Food to a larger food tradition</strong>&nbsp;- We curated a stylized kitchen with&nbsp;strong flavor about a Chinese kitchen, including appliances, condiments, and&nbsp;food choices.<br>
</li><li><strong>Bonding moment with Nainai</strong>&nbsp;- During this difficult period of time, you will have more chance than ever to talk to your Nainai and know her story!</li></ul>
<p><em>Nainai’s Recipe</em> is our thesis game made at <em>NYU Game Center</em>.&nbsp;<br></p>
<details>
<summary>中文介绍</summary>
<h3>奶奶的菜谱</h3>
<p>打开你的冰箱,选择食材,观察,切开,调味,加热,然后尝尝看。隔离的日子里,跟奶奶学做菜。</p>
<p>奶奶的菜谱是一个关注烹饪的真实体验的游戏。也是一个关于我们如何在 2020 年用一种特殊的方式生活在一起的家庭故事。</p>
<ul>
<li><strong>充分自由度</strong> - 游戏不使用预设的食材状态,玩家可以自由的控制做饭的流程,用自己的方法做出不同的食物。</li>
<li><strong>中国美食的传统</strong> - 食物与文化紧密相关,它不仅仅在多样的厨具,厨房的外貌,也在于做饭的程序,食材的搭配,食物的味道等等。我们希望在方方面面上捕捉到它们。</li>
<li><strong>奶奶的故事</strong> - 菜谱也通过家庭传承。长大后就和奶奶没有什么共同话题了,希望能借着学做菜的机会多聊几句。听到她的故事,再次认识奶奶。</li>
</ul>
<p>奶奶的菜谱是我们在纽约大学游戏中心(NYU Game Center)的毕设作品。中文版正在制作中。</p>
<p>如果在游戏中遇到 Bug,请使用游戏内的 Bug report 功能向我们发送错误信息(支持中文输入)。其他支持可通过 <a href="mailto:nainais.recipe@gmail.com" target="_blank" rel="nofollow noopener">nainais.recipe@gmail.com</a> 联系我们,感谢试玩!</p>
</details>
<p></p>
<blockquote>
<h4>Updates:&nbsp;</h4>
<strong>0.7.13 - Jun 5, 2021 </strong>- Fixed a resolution related bug.<br><strong>0.7.12 - May 30, 2021</strong>&nbsp;- Added a feedback button. Day 3 can be played.<strong></strong><br><strong>0.7.10 - May 21, 2021</strong>&nbsp;- Improved the performance of&nbsp;finely cut pieces<br><br>If you meet a bug, feel free to&nbsp;send us a bug report in the game!<br>For support or any other inquiries, contact us at&nbsp;<a href="mailto:nainais.recipe@gmail.com" target="_blank" rel="nofollow noopener">nainais.recipe@gmail.com</a></blockquote>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bPjFu0piGhQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc1LmdpZg==/original/3CshUz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc3LmdpZg==/original/IhKqDp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc4LmdpZg==/original/JHk%2BBG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTgwLmdpZg==/original/MCo5Cb.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC81OTQwNTI2LnBuZw==/original/RaqUOA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC81OTQwNTI1LnBuZw==/original/Wnp%2FL6.png]]
<p class="text-center">- A simple fighting game with one attack -<br></p>
<h3 class="text-center">NOW WITH ONLINE PLAY USING&nbsp;ROLLBACK&nbsp;BASED NETCODE</h3>
<p class="text-center"><a href="http://teridax.itch.io/nair-pico">PLAY A MINIATURIZED VERSION OF THIS GAME IN YOUR BROWSER OR ON YOUR PHONE</a><br></p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/XO7530lbMxw" frameborder="0" allowfullscreen=""></iframe></div>
<ul><li>Every attack you land heals your character, creating satisfying tug-of -war gameplay</li><li>Fast-paced action for short, tense games</li><li>Master genre-staple movement options such as dashdancing or wavedashing</li><li>Teaches spacing, neutral, and fundamentals</li><li>Features useful tools like hitbox visualizers, hurtbox visualizers with color-coded playerstates</li><li>Customize your controls with a wide array of possible configurations (1.2.0 or older)</li><li>ONLINE MULTIPLAYER, WITH ROLLBACK NETCODE (2.0.0 or newer)</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzIzMzYxMTUucG5n/original/EgCWvs.png" alt="How to Play" title="How to Play" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzI0NjYyMjEucG5n/original/6Dtcq1.png" loading="lazy"><br></figure>
<p><strong>Supported Controllers:</strong><br></p>
<ul><li>Xbox One, Xbox 360</li><li>&nbsp;Keyboard</li><li>Steam (2.0.0+)</li><li>PS4&nbsp;(2.0.0+)</li><li>Switch Pro&nbsp;(2.0.0+)</li><li>Gamecube????? Idk it used to but I haven't tested that in a year&nbsp;(2.0.0+)</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XO7530lbMxw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzI0MTYzMzQuZ2lm/original/6bo4ss.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzI0MTYzMDAuZ2lm/original/M4QmOQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzYwNDkucG5n/original/YlmRhg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzYxNTkucG5n/original/1PmVFv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzg2MjAucG5n/original/RU1yl3.png]]
<figure><h4 class="text-center">He’s nasty, he’s little, and he’s <em>got </em>to go.</h4><p class="text-center"><em>Reconstruct the cursed statue of a small, wretched man and banish his evil spirit forever. But beware—this diminutive scoundrel wants to cut you down to size.<br></em></p><p>Can&nbsp;you reconstruct his&nbsp;cursed effigy&nbsp;before&nbsp;his avatars morph you into their ranks?<br></p><p><strong>Controls</strong><br>Mouse &amp; Keyboard: WASD + Mouse look<br>Controller: Left &amp; Right stick<br></p></figure>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2OTEuZ2lm/original/eD48LX.gif" loading="lazy"></p>
<h4 class="text-center">"Noooo! I don't want to become the nasty little man!!! Noooo!"<br>- Another Playtester</h4>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2ODkuZ2lm/original/lWqQJz.gif" loading="lazy"></p>
<h4 class="text-center">"This game truly knows what it means to be haunted."<br>- Playtester</h4>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2OTkuZ2lm/original/nb7E%2B%2B.gif" loading="lazy"></p>
<h4 class="text-center">"Euuuggh!! No!! I don't like him!!"<br>- Yet Another Playtester</h4>
<h4>Additional reviews:</h4>
<p>"This is so creppy" - Super Great716</p>
<p>"Don't tell me that thing actually exists. The video was creepy as heck" - Zakurako</p>
<p>"I dont like What that name implies" - LVBBoi</p>
<p>"why it creeped me out" - Maйя</p>
<p>"My fears are just here. Right here." - Aari Moonlight</p>
<p>"This actually got me to start looking away from my computer screen about two thirds through." - Tales</p>
<p>"気味が悪いけど笑えるホラーゲームです!" - @konasu573</p>
<p>"I guess I'm getting smaller. F**k me I guess." - TryShock<br></p>
<h4>Technologies Used</h4>
<ul><li>Audacity</li><li>FL Studio</li><li>Procreate</li><li>Blender3D</li><li>Unity3D<ul><li>PSXEffect Addon</li></ul></li></ul>

[img width=500 [https://img.itch.zone/aW1nLzMwNjEwMTYuanBn/original/l3knjd.jpg]]
<p><strong>NOTE</strong>: Online multiplayer is only available in the <a href="https://store.steampowered.com/app/1421410/Nectar_of_the_Gods/" target="_blank" rel="nofollow noopener">Steam version</a><span></span> of the game. This is because the online netcode is built utilizing Steam's "Steamworks" backend.&nbsp;<strong></strong></p>
<p><strong>Nectar of the Gods</strong> is an unquenchable head-to-head real-time strategy game where bugs battle over the finest beverages. You must strategically deploy a chosen bug family, nimbly navigate the countertop, and claim liquid nirvana!<br></p>
<ul><li><strong>Party any way you want</strong>: Solo or Local Multiplayer</li><li><strong>24 unique bugs</strong> with special abilities and quirks for you to optimize across 3 Bug Families (Beetle Brigade, The Hive, Spidey Party)</li><li>Navigate <strong>3 dynamic countertops</strong>: Soda Fountain, Boba Shop, Coffee Bar</li><li><strong>Colorful, delicious visuals </strong>to immerse you in the miniature conflict</li><li>Catalog your journey with <strong>detailed game statistics</strong> and <strong>achievements</strong></li><li>Lead your bugs with <strong>multiple inputs</strong>: M/K or Controller</li></ul>
<p>In Nectar of the Gods you will embody<strong> Beetle Brigade</strong>, <strong>The Hive</strong>, and <strong>Spidey Party</strong>. Each bug family has 8 unique bugs with special abilities and quirks. Examples include a Rhino Beetle that propels fellow beetles forward with it's mighty stampede. And a Queen Bee that boosts your team's resources by producing precious royal jelly. All of the bugs have sampled the sweet sweet nectar of the drink industry and are counting on you to coordinate a winning drink against any bugs standing in your way. In order to deliver this bubbly bliss, you will need to maximize every bug's contribution, while squashing anything your opponent or the countertop can throw at you.</p>
<p><span></span></p>
<p>I was inspired to make&nbsp;Nectar of the Gods by the&nbsp;"rock paper scissors" tactics and mental reflexes of real-time strategy games. I love the idea of bite sized asymmetrical battles where you have to think quick on your feet and rely on your mastery of the units available to you.&nbsp; And bugs are rad</p>
<p><strong>Blog</strong></p>
<p>Check out the gamedev blog here:&nbsp;<a href="http://bitly.com/bwt-gamedev-blog" rel="nofollow noopener">http://bitly.com/bwt-gamedev-blog</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/oaFosKnbZpM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjQuanBn/original/FFSX%2FL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjAuanBn/original/fXXt3N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjIuanBn/original/CMsG3B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjMuanBn/original/KJlTYY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjEuanBn/original/FmYACC.jpg]]
<p class="text-center">You are an <strong>Angel</strong>.</p>
<p class="text-center">Your mission is to find and save program WZ-07-HK.&nbsp;Explore the darkness of the simulation until you find it but be wary, as deadly threats may come on your way.</p>
<p class="text-center">A&nbsp;game by Lyrdinn :&nbsp;<a href="https://twitter.com/lyrdinn" rel="nofollow noopener">https://twitter.com/lyrdinn</a></p>
<p class="text-center">Music composed by&nbsp;<strong>Blu L'Oiseau Bleu {°&gt;</strong> :&nbsp;<a href="https://twitter.com/BluLOB" class="" title="https://twitter.com/BluLOB" target="_blank" rel="nofollow noopener">https://twitter.com/BluLOB</a></p>
<p class="text-center">IF YOU LIKE THE GAME PLEASE SUPPORT ME AND THE COMPOSER BY BUYING THE BONUS CONTENT.</p>
<p class="text-center">The bonus content contains all the music for the game and a complete 13 pages PDF explaining how I made the game with exclusive concept art and process never posted anywhere else !</p>
<p class="text-center">- - - - - - - - -&nbsp;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</p>
<p class="text-center">Made in a month from January the 1st to February the 1st on Godot.</p>
<p class="text-center">A 10min text-based experience.</p>
<p class="text-center">Included in the game jam : "Finally finish somethings&nbsp;2021"</p>
<p class="text-center">Available in French and English, the game may have bugs with languages sorry.</p>
<p class="text-center">Dyslexia and epilepsy accessibility is available. Visual impairment acessibility will be coming next update ! Please contact me at lyrdinn@gmail.com if you want to request a language or more acessibility options.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2NzkucG5n/original/%2F5R5Vp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODAucG5n/original/oKHCrw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODIucG5n/original/NTad0K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODQucG5n/original/PjbQO4.png]]
<p>Neon Baller 0.1 is a continuation of an experiment in physics based 3D platforming with improvements to audio, visual, and controls. Also includes a new map that can be beat in a little over two minutes if you time it right.&nbsp;<br></p>
<p>This version also includes game pad support not listed in the game itself.&nbsp;<br></p>
<p><strong>Controls:</strong></p>
<p><strong>Movement= WASD/ Left Stick<br></strong></p>
<p><strong>Jump= Space Bar/ A (xbox) / X (ps4)&nbsp;<br></strong></p>
<p><strong>Reset= Tab/ Y (xbox)/ Triangle (ps4)</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/aeQafNCZK1s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzI0ODYyMjEucG5n/original/u1oIar.png]]
<p>You are Jillian Cleary: an ex-spy on the run, framed for treason and hunted by your former agency. You must move in secret, survive off the grid, and find a way to clear your name. Old friends and new allies will lend their support; but with the eyes of the world upon you, who can you trust?</p><h3>Stealth</h3><p>Keep in the shadows, move in silence, and stay out of sight. Escape from tight situations by scrambling your enemies' vision. Enhance your performance with black market stims.</p><h3>World</h3><p>Explore a concrete-and-neon brutalist vision of the modern surveillance state. Undertake eight missions spanning two continents. Meet a diverse range of interesting characters.</p><h3>Music</h3><p>Featuring an 18-song soundtrack by electronic rock band The Home Conversion.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/llginnqhMBI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjExLmpwZw==/original/K0gnMj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjEwLmpwZw==/original/cBX4Xq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjA4LmpwZw==/original/r%2FfVby.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjEyLmpwZw==/original/Vw7ZrZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjA5LmpwZw==/original/kjgvNQ.jpg]]
<p>In the center of the cosmic maelstrom, the mushroom forests and blasted lands are home to mighty mutants, cunning hunters, brilliant hackers, and mysterious witches. They survive a world of cannibal gangs, cyber-dinosaurs, wizard kings, and insectoid warlords. It rules.</p>
<p>Neutron Axe is an original tabletop rpg ruleset inspired by <a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a> and <a href="https://johnharper.itch.io/blades-in-the-dark">Blades in the Dark</a> and <a href="https://jasontocci.itch.io/2400">2400</a>. It does really cool dice stuff to make fast and heavy weapons feel distinct in how they deal with magical shields and armor. Also: it tells you to burn daemon skulls and harvest motherboards from cyborgs. Also also: we drew special icons for it and they look really charming imho. A screen reader friendly version is included. Special thanks to <a href="https://adamebell.itch.io/">Adam Bell</a>, <a href="https://keganexe.itch.io/">Kegan.exe</a>, and the <a href="https://podcasts.apple.com/us/podcast/brain-trust/id1473715893" rel="nofollow noopener">Brain Trust Podcast</a> for their continued brain blasts.</p><p><strong>PRAISE FOR NEUTRON AXE</strong><br></p><p>"Neutron Axe is deeply the thing i want every one of my games to be." - <span class=""></span><a href="https://www.worldchamp.io/" rel="nofollow noopener">Adam Vass of World Champ Game Co.</a><br></p>
<p>To print Neutron Axe as a tri-fold pamphlet, print "Neutron Axe.pdf" on both sides of the paper, flipping on the short side. Fold on the lines, bringing both edges in to the center so the title column is the front cover.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU5NjQuanBn/original/okIUuz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjEucG5n/original/5kiYhY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjMucG5n/original/%2BiOHWP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjUucG5n/original/Pm7GHs.png]]
<p>This Game is a re-imagined version of <a href="https://noahlseymour.itch.io/night-spirits">Night Spirits</a></p>
<p>Content warnings: potential flashing images, potential noise distortion,&nbsp; potential jump scares, dark woods, glitch effects</p>
<p></p>
<p><br></p>
<p><strong>Controls</strong>:</p>
<p>WASD - movement</p>
<p>Mouse - look</p>
<p>left Click - take photo</p>
<p>right Click Hold - raise Camera</p>
<p>Esc - close game</p>
<p>Tab - invert mouse Y</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NjI1LzI2MTQxODUuZ2lm/original/oYEnFa.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NjI1LzI2MTQxOTQuZ2lm/original/Vr0Qos.gif]]
<h3>Adventure can be comfy.</h3>
<p>If you like fantasy roleplaying but you don't want to spend so much time slaughtering orcs or doing magical bookkeeping, then&nbsp;<em>Next Horizon</em> might be for you!</p>
<p>Built on the straightforward <a href="https://purpleaether.itch.io/alpha-duo-roleplaying-basic-rules" target="_blank">Alpha Duo engine</a>,&nbsp;<em>Next Horizon</em> is easy to grasp for newbies and comfortably familiar for veteran roleplayers. Learn the game in minutes, fit all your character details on a single page, and then traverse a magical world at your leisure.</p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzU0NDU1MTEucG5n/original/14RK3I.png]]
<$list filter="[all[current]has:field[url]]">
<$vars prevSection={{{ [has:field[url]before{!!title}] }}}
       nextSection={{{ [has:field[url]after{!!title}] }}}
			 upChapter={{!!parent}}>
<div class="gtw-section-manager">
	<div style="text-align: left;">
		<$list filter="[<prevSection>!is[blank]]">
			←&nbsp;<$link to=<<prevSection>>>Previous: <<prevSection>></$link>
		</$list>
	</div>
	<div style="text-align: right;">
		<$list filter="[<nextSection>!is[blank]]">
			<$link to=<<nextSection>>>Next: <<nextSection>></$link>&nbsp;→
		</$list>
	</div>
</div>
<div style="text-align: center; clear: both; padding-top: 1em;">
<!-- I have no idea why this div needs to be here, but everything breaks otherwise. -->
</div>
</$vars>

<style>
div.gtw-section-manager div {
	/*border-top: 1px solid <<color table-border>>;*/
	/*padding-top: 10px;*/
	/*margin-top: 6ex;*/
	width: 50%;
	float: left;
}
</style>
</$list>
<p>Ludum Dare was in October, and I was doing InkTober already, so I thought, "Hey, why not make a video game from my InkTober drawings." I didn't get done for Ludum Dare. I'm not done as of over a month later, but still going to finish it up, because this has been so much fun. #InkJam</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/FeBSK6Kf1Ys" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI5MDI4MDkuZ2lm/original/CIZeQK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTkuZ2lm/original/PnccH2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTguZ2lm/original/9PmUxI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTcuZ2lm/original/r12b75.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MjIuZ2lm/original/7ZIQJW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MjEuZ2lm/original/q6b43o.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI5MDI4MjQuZ2lm/original/oO75iE.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTcuanBn/original/2ilYXc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTUuanBn/original/Vtda5u.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjAuanBn/original/Oxb%2FdP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTkuanBn/original/CFkQ4B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTYuanBn/original/E%2BnBJM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjIuanBn/original/VIl%2FwI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjEuanBn/original/zdKJ%2BO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjMuanBn/original/xt%2F8Rm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTguanBn/original/hoK2ml.jpg]]
<p>New edition of&nbsp;No Love's Land, following our successful <a href="https://www.kickstarter.com/projects/adiraslattery/no-loves-land" rel="nofollow noopener">Kickstarter</a>!</p>
<p><strong>&gt;DESIGNED FOR WAR</strong></p>
<p><strong>&gt;YOU ARE ON OPPOSITE SIDES</strong></p>
<p><strong>&gt;YOU HAVE FALLEN IN LOVE</strong></p>
<p>You are a killer robot stationed on the moon of Ahava, covered in a dense radiation field.&nbsp;The only way you have to get a message to your secret&nbsp;girlfriend and fellow killer robot is to send them a message inscribed on a missile. Time to fire...</p>
<p><strong>&gt;LOVE CONQUERS ALL</strong></p>
<p><strong>&gt;AND YOU WERE MADE TO CONQUER</strong> </p>
<p><img src="https://img.itch.zone/aW1nLzMzNjcwOTAuanBn/original/MIzcUH.jpg" loading="lazy"></p>
<p><strong>&gt;KICKSTARTER VERSION CREDITS<br></strong></p>
<p><a href="http://adira.itch.io">Adira Slattery</a>, Designer</p>
<p><a href="http://fenslattery.com" rel="nofollow noopener">Fen Slattery</a>, Layout</p>
<p><a href="http://" rel="nofollow noopener">RobotsAndSuch</a>, Cover Artist</p>
<p><a href="http://robohaven.itch.io">Josie Noronha</a>, Interior Artist</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjAucG5n/original/SyQtMW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjEucG5n/original/lUe8ZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjIucG5n/original/7%2FQTJO.png]]
<p><em>The <strong>HMS Solitude </strong>is an expedition vessel with its own accompanying deep sea research submarine, <strong>The Exile</strong>.</em></p>
<p><em>At the bottom of the deepest ocean, the submarine is lying helpless in the unfathomable depths. After bringing a strange artifact on board, the engines were destroyed, stranding the crew in the dark. At first they suspected sabotage, but then the deaths began.</em></p>
<p><em>One of you is the only surviving member of <strong>The Exile</strong>. The crew are dead. You are alone. You are running out of air. You have one lifeline to human contact, a daily transmission to your partner on the <strong>HMS Solitude</strong>.</em></p>
<p><em>One of you is the communications officer aboard the <strong>HMS Solitude</strong>. You are the only lifeline to <strong>The Exile</strong>. Can you keep your partner stable as you float powerlessly above?</em>
  </p>
<p><em>Will you rescue them before they succumb to the pressure? </em>
  </p>
<p><em>Or will the creature get to them first? </em>
  </p>
<p>____________________________________________________________________________</p>
<p>This game is based on The Wretched, you can find that game here: loottheroom.itch.io/wretched
  </p>
<p><em>The Wretched is a game about human resilience in the face of overwhelming odds and almost certain death. It is a game about Isolation, fear, and perseverance.</em></p>
<p>In this game, No One Goes Alone, you play as a Team. One of you will use The Solitude Manual, and the other will use The Exile Manual.</p>
<p>Together you will explore how connection with another person brings hope, no matter how dark the depths...&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NDczLzM3OTIyMDYuanBn/original/diCBWh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NDczLzM3OTIwNjQucG5n/original/ZYQa9I.png]]
<p>No One Lives Here Anymore is a single player, Outcomes Engine game about boxing up the things in your house after your last parent dies. It’s quiet, it’s meditative, it reflects on loss and memory. Ultimately, it is about the gulf of alienation that comes when family is gone.</p>
<p>Any players currently struggling with loss in any form may direct message me for a free copy of the game.</p>

[img width=500 [https://img.itch.zone/aW1nLzE4NjYzNjkuanBn/original/dXnJaT.jpg]]
<p class="text-center"><span></span></p>
<p class="text-center"><br></p>
<p class="text-center">WASD to move</p>
<p class="text-center">esc makes the mouse cursor visible</p>
<p class="text-center">if you ever think you're stuck, hold S to leave any situation<br></p>
<p class="text-center"><br></p>
<p class="text-center">--</p>
<p class="text-center">i like to think about what's going on inside technology when we aren't looking. maybe nothing is happening, just electrical signals pulsing, but then again... maybe they're all having a dance party in there, i wouldn't know.</p>
<p class="text-center">talk to some characters before the battery dies and the phone turns off for good. you can take as long as you like.</p>
<p class="text-center"><br></p>
<p class="text-center">thank you&nbsp;to Nephasto, TripleAxis and Invector</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/GuZERAewDK8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTgucG5n/original/GvpPwO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTEucG5n/original/ZjaB75.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTIucG5n/original/R3IvMi.png]]
<p>You ever had dreams but never kept a dream diary? Me neither!</p>
<p>This game is a throwback to dreaming and not having your cake, don't remember anything? No worries, you'll forget everything after today too!</p>
<p>This game is basically a simulation on what a dream could hypothetically be. What is a dream? What is a nightmare? What is your mind that causes you to have a weird dream that doesn't make sense? Are we guilty? Are we innocent?&nbsp;</p>
<p>Thinking can be weird, and even when we don't think dreams can be what our subconscious thinks. I might be wrong, I'm not an expert, I'm just a dude who made a game.</p>
<p>This game is also a throwback to pixel shaded games that were released on the original Playstation such as Ridge Racer or Doom for the Playstation (albeit different genres). I also mainly got inspiration from Osamu Sato and LSD Dream Emulator, thank you.</p>
<p>Credits:</p>
<p>Adil S - Director, Creative Director, Game Design, 3D&nbsp;Art, Level Design, Tech Art<br>Austin Lothman - 3D&nbsp;Artist (keys)<br>Lilith Walther - Material Artist and Consultant<br>Alessa Baker - Materiali Artist and Consultant</p>
<p>Credits to Playtesters:</p>
<p>Tyrone Tysdale-Montague<br>Keely Brown<br>Jan Domalaon<br>May Kwan<br>Kent Martinez<br><br></p>
<p>Credit to Kirushanth Seeralan for converting NoSeq to web<br></p>
<p>Huge thanks to Eric B for helping me on the cover art of NoSeq,&nbsp;</p>
<p>Game audio from;</p>
<p>Mixkit<br>Dl&nbsp;Sound<br>Zapslat<br>Adil S</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/CsmweoPv8DA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjQucG5n/original/vwgYQJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjUucG5n/original/Fx4DrC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjgucG5n/original/%2BsqG5i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjkucG5n/original/K%2FeIFs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NzEucG5n/original/f92G6E.png]]
<p>Based on the horror icons of the silent era,&nbsp; this sprite pack contains 20 high quality characters formatted for GB Studio allowing you to simply copy and paste them into your project folder on the fly.&nbsp;</p>
<p><br></p>
<p>All character's likeness are public domain (1926 at the latest as of 2021).&nbsp;</p>
<p><br></p>
<p>Characters from the following films&nbsp;can be found in this pack:&nbsp;Nosferatu, The Golem , Genuine, The Cabinet of Doctor Caligari, The Raven, The Bat, Eddison's Frankenstein, Aelita: Queen of Mars, Warning&nbsp;Shadows, From Morn to Midnight,&nbsp;&nbsp;The Headless Horseman, Faust, The Hands of Orlac. As well as a bonus 4 sprites inspired by Goth Rock and Horror Punk bands.</p>
<p>All images are licensed under CC-BY (free for commercial usage with attribution).&nbsp;<a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener">https://creativecommons.org/licenses/by/4.0/</a></p>
<p>Just credit me something like "Nosferatu Sprites by Beachboogeyman" somewhere on your project :D</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU3NDMzMjEucG5n/original/l%2BN9cX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU3NDM2NzkucG5n/original/2frHPY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU2NzY3MTYucG5n/original/1IeXNn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU2NzY3MTcucG5n/original/IMU5JU.png]]
<h2>Reviews</h2><p>“Very different. Excitingly different.” <br><a href="http://www.rockpapershotgun.com/2012/11/15/heres-a-procedurally-generated-permadeath-stealth-game/" rel="nofollow noopener">Rock Paper Shotgun</a> <br><br>“Pretty damn good stealth game, actually” <br><a href="http://www.youtube.com/watch?v=eQfqZEw5i5c" rel="nofollow noopener">TotalBiscuit</a></p><h2>About This Game</h2><p>You are a robot in an office building. You have to eat furniture and not get caught. A mysterious story unfolds.&nbsp;</p><p><br>Not The Robots is this year’s most exciting Roguelike Stealth Furniture Eating Simulator. It’s a game with random levels, permadeath, and the goal of eating furniture. Same furniture is also your stealth cover. </p><ul><li>A seven-building Campaign Mode of increasingly brutal (and fully procedural) levels 
</li><li>Fearsome machine-gun-equipped patrolling guards to avoid and trick 
</li><li>Spotlights, lasers, bombs, and other traps to sidestep 
</li><li>Tons of crafty gadgets to master 
</li><li>Contains an unlockable sequel to "You Find Yourself In A Room," a previous game from 2DArray 
</li><li>Short/medium/long game modes for play sessions of any size 
</li><li>Mysterious and fully-voiced storyline to gradually explain the game's strange setting 
</li><li>Controller support 
</li><li>The year's most exciting furniture-eating stealth game!</li></ul><h2>About 2DArray</h2><p>2DArray is previously known for web game hits like&nbsp;<a href="http://armorgames.com/play/4918/the-company-of-myself" target="_blank" rel="nofollow noopener">The Company of Myself</a>,&nbsp;<a href="http://armorgames.com/play/13070/fixation" target="_blank" rel="nofollow noopener">Fixation</a>,&nbsp;<a href="http://armorgames.com/play/12390/fisher-diver" rel="nofollow noopener">Fisher-Diver</a>, and&nbsp;<a href="http://www.newgrounds.com/portal/view/494129" target="_blank" rel="nofollow noopener">Spewer</a>. This is their first commercial game, supported by tinyBuild GAMES.&nbsp;</p><ul><li>Follow <a href="http://twitter.com/2darray" rel="nofollow noopener">@2DArray</a></li></ul><h2>About tinyBuild GAMES</h2><p>tinyBuild GAMES is an indie game development and publishing company. <a href="http://store.steampowered.com/app/227280" rel="nofollow noopener">No Time To Explain</a> is their first game. It came out of a successful Kickstarter and Greenlight adventure. They're currently working on a bunch of games: </p><ul><li>Co-developing <a href="http://store.steampowered.com/app/207140/" rel="nofollow noopener">SpeedRunners</a> -- currently in Early Access on Steam 
</li><li>Working with 3rd party devs on games like <a href="http://store.steampowered.com/app/257120/" rel="nofollow noopener">Not the Robots</a> (live on Steam) 
</li><li>Preparing to release <a href="http://www.youtube.com/watch?v=AcAI1yClATw&amp;list=UUHLuN_JL66bD8fdJWmQ-gNw&amp;feature=c4-overview" rel="nofollow noopener">Fearless Fantasy</a> and other unannounced titles 
</li><li>Unannounced super-secret in-house game</li></ul><ul><li>Follow <a href="http://twitter.com/tinybuild" rel="nofollow noopener">@tinyBuild</a></li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/VchorougyuA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjcuanBn/original/ZE%2F7db.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjguanBn/original/kfu88v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjkuanBn/original/cav2XN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNzEuanBn/original/4xaZHf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNzIuanBn/original/X0kMG9.jpg]]
<p class="text-center"><strong>Coming November 5th 2020</strong><br></p>
<p>Once upon a time in the late 20th century AD, near the turn of the penultimate decade of the millennia, a magical confluence occurred in Middle School Macintosh computer labs across the globe: <strong>Artillery. </strong><br></p>
<p>Infamously known by teachers as the <em>scourge</em> of attention -- countless students spending entire computer lab periods firing cannons at each other instead of writing English assignments. The temptation too great, no child could refuse the siren's call of the game's accurate physics model and competitive nature.<br>
</p>
<p><strong><em>Notebook Artillery</em></strong> is a love letter to <strong>hours </strong>wasted playing video games in Middle School computer labs instead of working on class assignments. And sure, maybe if I would've spent more time paying attention in class and less time playing video games I wouldn't be making indie games as a means to pay off insane amounts of student debt. But hey, its 2020 and maybe this can be one last beacon of hope for myself and everyone who loves this kind of game.&nbsp;</p>
<p>Players choose their "firing angle" and "powder amount" to <strong>fire cannonballs at opposing player's towers</strong>, or break floating targets in a <strong>solo player target practice mode</strong>. The randomly generated stage layouts will change strategy from round to round, and wind strength has an effect on a cannonball's trajectory which players must account for. Its simple <em>arcade-simulation-action</em>, fun for all ages, with completely hand drawn game art running at a gorgeous 4K. It's like you're looking directly into a Trapper Keeper and the imagination of every middle school kid. Whats not to love?<br></p>
<ul><li>Hand drawn game art in gorgeous 4k.</li><li>Play Solo target practice, or challenge local friends and family in vs mode.</li><li>3 unique world styles fashioned after various wild west motifs.</li><li>Stage layouts are randomly generated to make no two games the same.</li><li>Fight the wind and dodge trees to destroy opponents strongholds.</li><li>Completely visual buttons, no in-game writing.</li></ul>
<p>This was such a fun game to make, and it's so much fun to play with my kids, I hope you find it as fun as I do. And for fans of the original Macintosh classic, I hope this fulfills the desire to play this game again.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ0ODU2NjMucG5n/original/4U2fYq.png" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/kyNOky7BE6Q" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg1OTkuZ2lm/original/3CECmi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDAuZ2lm/original/bgAzHJ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDEuZ2lm/original/HBU0n%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDIuZ2lm/original/3A0g%2BD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDQuZ2lm/original/f4sdN2.gif]]
<p>Nuclear Throne is Vlambeers latest action roguelike-like about mutants that spend their workdays trying to fight for the throne in a post-apocalyptic world. The radioactive waste in the world allows mutants to get ahead by mutating new limbs on the fly and the abundant availability of powerful weaponry makes the quest to become the ruler of the Wasteland one fraught with peril. All of this is really just an excuse for us to make a fun action game.</p>
<ul><li>12 playable characters with unique advantages, active and passive abilities.</li><li>7 playable main worlds and numerous secrets to be found spanning deserts, frozen cities and underground labs.</li><li>Almost 30 ways to mutate your character, creating millions of interesting playable strategies and combinations.</li><li>Over 120 weapons ranging from the familiar machine-gun and shotgun to the screwdriver and ion cannon.</li><li>More than 15 tracks by LUFTRAUSERS musician Jukio Kallio, also featuring tracks and lyrics by Doseone &amp; Eirik 'Phlogiston' Suhrke.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7LSs1bj41P4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY0LnBuZw==/original/ba0QjE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY5LnBuZw==/original/0WPU%2FP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY2LnBuZw==/original/WMox3t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY3LnBuZw==/original/DOUoem.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY1LnBuZw==/original/lW%2FZxI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY4LnBuZw==/original/L0mb1b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcxLnBuZw==/original/a4OTVp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcwLnBuZw==/original/vxTF9E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzczLnBuZw==/original/bBhDWJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcyLnBuZw==/original/pK%2BJQK.png]]
<p>
</p>
<p>Numberton is a puzzle game for one or two players, made for the early Sharp MZ home computers from Japan. The game shares some elements with Tron-like games, but the gameplay mechanics are based on numbers instead. It's easy to learn, but you'll have to plan ahead and be smart to obtain good scores.</p>
<p>The game may also be played as a two player battle puzzler, where the players try to kill each other by fencing each other in.</p>
<p>There are also various bonuses to grab, and the settings can be adjusted to play the game in many ways. Try to score over 5000 points – or can you reach 10 000 points?<br></p>
<p><strong>Instructions:</strong></p>
<p></p>
<figure><img src="https://img.itch.zone/aW1nLzUxNzAyNDkucG5n/original/w99iWm.png" loading="lazy"><br></figure>
<p><img src="https://img.itch.zone/aW1nLzUxNzAyNzQucG5n/original/L1D6BA.png" loading="lazy"></p>
<p><br></p>
<p><strong>Technical information:</strong><br></p>
<p>The file contains two versions, one specifically tailored for the <strong>Sharp MZ-700</strong>, and one for the <strong>Sharp MZ-80A/MZ-1200</strong>. The latter will work on the <strong>MZ-80K</strong> as well. Both versions have been designed to work with Japanese and European font ROMs.</p>
<p>Numbertron requires 48k of memory.<br></p>
<p>You may download files for use with emulators, as well as sound files which can be recorded directly onto audio cassettes for use with real hardware.<br></p>
<p>Emulators are not provided, but needed if you want to run the game on a PC. The recommended emulators for Windows-based computers are EmuZ-80A, EmuZ-1200 and EmuZ-700. I do not recommend the commonly used Multi-Emu, as it is old and inaccurate.</p>
<p>The game is free to download, though you may name your own price if you want to support me.<br></p>
<p><strong>Physical release:</strong> Retro publisher <a href="http://mz-sharpworks.co.uk/" rel="nofollow noopener">Sharpworks</a> is planning a collector's edition release on physical cassette tape. More info on that later!<br></p>
<p><em>Like the concept? My friend Mikito Ichikawa of Mindware has created a PC game inspired by Numbertron, but with many new features and enhancements. It features a soundtrack by Namco legend Junko Ozawa, and is quite addictive. Check out <a href="https://store.steampowered.com/app/1076070/Alice_and_You_in_the_planet_of_numbers/" target="_blank" rel="nofollow noopener">Alice &amp; You in the Planet of Numbers on Steam</a>!<br></em></p>
<p>Numbertron in its natural habitat:<em><br></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzUxNzExNzguanBn/original/UuWEZo.jpg" loading="lazy"></em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTIucG5n/original/FOUdzz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTMucG5n/original/GYPeii.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTEucG5n/original/6ZNoK3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTkucG5n/original/GcOdse.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMzgucG5n/original/rvuUvN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzMwMjQucG5n/original/%2BTSGSy.png]]
<h1>Air hockey but you control both players.</h1>
<p><img src="https://img.itch.zone/aW1nLzQzNjQxMzMuZ2lm/original/MFwIM%2B.gif" loading="lazy"><br></p>
<p><em><strong>Keep the puck from touching bad stuff to rack up points!</strong></em></p>
<ul><li>5 Unique Maps</li><li>Show your rank!</li><li>Completely arcade based, no "win state"</li><li>Get on top to have your name shown to everyone who plays</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQzNjQ2MzkuZ2lm/original/M0Huyn.gif" loading="lazy"><br></p>
<p><br></p>
<h4>Special thanks to&nbsp;<a href="https://www.youtube.com/channel/UCUzEitsrWzd6MYDdZGUgk3Q" rel="nofollow noopener">Brass Harpooner</a> for the backend service and personally helping with the leaderboard&nbsp;<a href="https://t.co/rOwyNlzTxc?amp=1" target="_blank" rel="nofollow noopener"></a></h4>
<p></p>
<h4>Soundtracked by&nbsp;<a href="https://t.co/rOwyNlzTxc?amp=1" rel="nofollow noopener"></a><a href="https://t.co/rOwyNlzTxc?amp=1" target="_blank" rel="nofollow noopener">Dan1021</a></h4>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc5NjM2LzQzNjQ5MzguZ2lm/original/DuPsor.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc5NjM2LzQzNjQ5NDIuZ2lm/original/M9kXXK.gif]]
<p><em>Ocean Tides</em> is a GMless collaborative storytelling game of entanglements at sea and is a hack of the game <em></em><a href="https://lumpley.itch.io/firebrands">Mobile Frame 0: Firebrands by Vincent Baker</a>. In it, you assume the role of either a Mermaid, a Pirate, or a Naval Officer and you try to create messy entanglements with your fellow players. Fight with your friends, ally with your rivals, and fall in love with your enemies.</p>
<p>You will need<br></p>
<ul><li>3-6 players</li><li>2+ hours</li><li>A handful of coins per player</li></ul>
<p>The "pretty" version includes a more robust layout but is functionally the same as the non-pretty PDF.<br></p>
<p><strong>Actual Play</strong></p>
<p>If you would like to hear what&nbsp;this game can play like, you can find a three-episode actual play involving myself, @littleladymab, @jadeoxfordrose, and @sacalow here:&nbsp;<a href="https://ftlcast.podbean.com/e/episode-401-drama-in-my-ocean-its-more-likely-than-you-think/" rel="nofollow noopener">Part 1</a>, <a href="https://ftlcast.podbean.com/e/episode402-i-mean-most-people-have-skulls/" rel="nofollow noopener">Part 2</a>, <a href="https://ftlcast.podbean.com/e/episode-403-very-cool-and-sexy-of-him/" rel="nofollow noopener">Part 3</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzMucG5n/original/W52RC7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzQucG5n/original/vjgFxU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzgucG5n/original/ejUeTg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzUucG5n/original/SjiX12.png]]
<p>Oceans 2400 is a microgame hack of <a href="https://jasontocci.itch.io/2400">24XX</a> and inspired by <a href="https://bladesinthedark.com/" rel="nofollow noopener">Blades in the Dark</a> for playing fast paced cinematic heists like those in Oceans 11, The Italian Job, and Mission Impossible.<br></p>
<p>Are you <strong>the Face</strong>, talking your way into and out of dangerous situations? <strong>The Demo Expert</strong>, ready to tackle any obstacle with high energy solutions? <strong>The Mastermind</strong>, with a cunning ace up your sleeve? Or <strong>the Veteran</strong>, here for one last job before retirement? Take on one of nine roles and use your unique skills to form a crew to break, enter, and rob.</p>
<p>Trick guards, bypass laser defenses, crack safes, and hack computers to get away with your prize. If something goes horribly wrong, don't worry! Flashback to an earlier scene to reveal how this was actually part of your plan all along. <br></p>
<p>Includes GM tools for tracking the level of alarm and alertness of the situation during a heist, along with a generator to create high stake heists with dramatic twists waiting in the wings.<br><br>Written for the <a href="https://itch.io/jam/2400jam">24XX Jam</a>.<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODE3MDYzLzQ1ODE5MTEucG5n/original/3F5dyY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE3MDYzLzQ1ODE0ODUucG5n/original/WIEz3A.png]]
<p>Dive deeper and deeper into the depths of the ocean to gather more and more rare resources.&nbsp;But watch out for what is lurking the depths.&nbsp;The shop, with all it’s upgrades will turn out to be very valuable.&nbsp;Dive, Mine, Sell &amp; Thrive!</p>
<p>Please download the LATEST version for the extended POST-Jam updates.</p>
<p>&nbsp;&nbsp;</p>
<p>Controls:</p>
<p>WASD - Move</p>
<p>E - Interact</p>
<p>Left Click - Mine</p>
<p><br></p>
<p><a href="https://twitter.com/warrrkus" target="_blank" rel="nofollow noopener">@warrrkus (Twitter) for news and updates</a><br></p>
<p><br></p>
<p>This is a solo developer project. The game was made initially made for the 48th Ludum Dare Game Jam in ~72 hours. All assets where either created during the jam or are CC0-Licensed, gathered from various sources.<br></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><strong>------------ A few hints / tips. Don't read this if you want to find stuff out on your own: -----------------------------------------------------</strong></p>
<p>- The deeper you go, the more valuable the ore gets. While ore at near surface level is only worth 1 credit, one ore from the depth can be worth thousands of credits.</p>
<p>- Always watch your oxygen and depth meter. If you ignore one of them or both death will come very quick. Also watch out for the fish. They are not your friends.</p>
<p>- Buying equipment that increases your depth always means that new ore types are now accessible, making the ore types you found so far obsolete. Be brave and try diving near your maximum depth limit. Great risks bring great rewards.</p>
<p>- Always remember in which direction you headed. Always try to remember your way back to the ladder.</p>
<p>-&nbsp;If you have to grind for a long time for your next piece of equipment you're probably doing something wrong.</p>
<p><br></p>
<p>&nbsp; &nbsp; &nbsp;&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81ODEzMDMzLmdpZg==/original/w%2FHjt%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81ODM5Nzk5LmdpZg==/original/smRESU.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjQ5LnBuZw==/original/ViHCv%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzOTExLnBuZw==/original/xylmIt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjY3LnBuZw==/original/jba9iX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjU1LnBuZw==/original/1Iq25B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjM4LnBuZw==/original/quiS54.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjcwLnBuZw==/original/T9Tsx2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjc3LnBuZw==/original/iofrKp.png]]
<p><em>A&nbsp;fallen camellia i</em><em>s a beheading, every time, every petal falling at once: a severing.</em></p>
<p><span></span>════*.·:·.☽✧&nbsp; &nbsp;✦&nbsp; &nbsp;✧☾.·:·.*════</p>
<p>TW: CSA, animal death, violence, suicidal ideation</p>
<p>OCHITSUBAKI || 落ち椿 is a game about the impossibility of translating trauma. It is a&nbsp;visual novel that combines a retro anime aesthetic with distinctly modern elegance, and it has three language options: JPN, ENG, and JPN translation. The ENG/JPN versions are two different renditions of the story, thus requiring a separate JPN translation, emulating what happens when you try to translate something as complex as identity. My biggest inspiration is the Sega Utena game, playing it in both ENG/JPN.</p>
<p><strong>The demo only contains the first two ENG chapters, an estimated 30-45min of playtime.</strong></p>
<p>════*.·:·.☽✧&nbsp; &nbsp;✦&nbsp; &nbsp;✧☾.·:·.*════<br></p>
<p>Hanashiro (he/she/they) and their few remaining kin all react differently to the trauma of being immortal and witnessing the apocalypse over and over again in different cycles of reincarnation. Shiragiku is unfazed and cheery and flippant and whimsical and capricious; Shirayuri is nowhere to be found; and Hanashiro? Hanashiro is planning on their death in 10 years, when the camellias fall, if they cannot find a reason to live by then.&nbsp;<br></p>
<p>Hanashiro and Shirayuri have witnessed THE END OF THE WORLD before. But no one believed them. Shiragiku has seen many, many apocalypses, but she has never been hurt by any one after the first. Shiragiku has remembered every single end; Shirayuri has remembered none; and Hanashiro only remembers some. Which? Even he doesn't know.
</p>
<p>Hanashiro misses speaking her fey mother tongue, but she can't seem to find anyone willing to listen to her, not even her own kind. And then she makes an enemy who just might. Their name is Lun Kochouran.&nbsp;
</p>
<p>And they might be the first one in a millennium to learn the Amayuri tongue.&nbsp;
</p>
<p>They also might be the first to kill an immortal.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjEuanBn/original/VTOcGl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjIuanBn/original/iU5q38.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjQuanBn/original/mbneoz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjguanBn/original/xwD9FP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjMuanBn/original/8Hwyf2.jpg]]
<p><strong>Players:</strong> 2 - 4&nbsp;</p>
<p><strong>Ages: </strong>12+ (cartoon violence)</p>
<p><strong>Avg Playtime: </strong>30 - 60 minutes</p>
<p><strong>Download includes separate&nbsp;full color and black &amp;&nbsp;white print sheets!</strong></p>
<p><strong><a href="https://www.thegamecrafter.com/games/odds-irons:-dino-combat-racing" rel="nofollow noopener">Full retail version available on TheGameCrafter.com!!</a></strong></p>
<p><strong><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=1636289783" rel="nofollow noopener">Also available on Steam Workshop&nbsp;for Tabletop Simulator!!!<br><br></a>-------------------------------------------------------------------------------------------------------</strong></p>
<p>In <strong>ODDS &amp; IRONS: <em>Dino Combat Racing</em></strong><em>&nbsp;</em> players compete in a Victorian derby using prehistoric birds called Moamegus. Players pick their Moamegus species, and hire a jockey from a diverse cast of&nbsp;characters.&nbsp; Once the race begins&nbsp;they'll have to&nbsp;avoid obstacles, use unique weapons, and make the most of their feathery steed's stats and jockey's abilities.&nbsp;</p>
<p>First one to reach the finish line in one piece wins!&nbsp;&nbsp;</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Choose the species of Dino that's right for your play style!</strong></p>
<p><em>Want to be as fast as possible?&nbsp;</em>Race with a <a href="https://ibb.co/nCNH76" rel="nofollow noopener">Wretch</a>.</p>
<p><em>Want to be as strong as possible?&nbsp;</em>Ride a <a href="https://ibb.co/mJaFum" rel="nofollow noopener">Broadhorn</a><span></span>.</p>
<p><em>Want to take a more balanced approach?&nbsp;</em>Try a <a href="https://ibb.co/cSiPn6" rel="nofollow noopener">Continental</a>.&nbsp;</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Even your odds by hiring one of the world's greatest jockeys!</strong></p>
<p>Pick from a cast of <a href="https://ibb.co/kHTFS6" rel="nofollow noopener">Bruisers, Gamblers, Defenders, or Speedsters</a>...</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Avoid obstacles and pick up unique contraptions to use against other players on a race track you can customize!</strong>&nbsp;</p>
<p>Make your own Circuit or Cup, or choose from one of the recommended <a href="https://ibb.co/haUw8b" rel="nofollow noopener">tracks</a>.&nbsp;<br>Compete in a unique race every match!</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Player Reviews:</strong></p>
<p><em>"The art of ODDS &amp; IRONS promises a fast-moving, light-hearted,&nbsp; and slightly nutty game, and the gameplay delivers. Our game at PAX was marked by several lead changes, unexpected turns (literal and metaphoric), and shifting alliances as players ganged up on the leader. The mechanics were easy to pick up, and players were presented with meaningful choices both in set-up and in each turn during gameplay."&nbsp;</em>-Mark (gamer and educator)&nbsp;</p>
<p><em>"ODDS &amp; IRONS effortlessly maintains a balance that many AAA games strive for but do not achieve. Half bumper cars, half bag of tricks, wholly enjoyable. O&amp;I is truly the thinking man's racing game."</em>&nbsp;-Stephanie (gamer and student)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg4NjYuanBn/original/xX1wU7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg4NjUuanBn/original/Ml7bUu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjMuanBn/original/wzQ08z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjEuanBn/original/uN24Zb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjcuanBn/original/ev2t0R.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjUuanBn/original/WEsdZu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjYuanBn/original/OCu5ft.jpg]]
<p class="text-justify">hi! for a while now i’ve been doing daily illustrations of small things that bring me joy. i started doing them because it’s been a rough year and i needed to make myself think something positive, if only for a brief moment. i’ve been sharing them on <a href="http://twitter.com/folmerkelly" target="_blank" rel="nofollow noopener"></a><a href="https://twitter.com/folmerkelly/status/1323390694040489997?s=20" target="_blank" rel="nofollow noopener">twitter</a> and <a href="http://instagram.com/folmerkelly" rel="nofollow noopener">instagram</a> to hopefully give others a small moment of joy as well.&nbsp;</p>
<p class="text-justify">so here is a curated collection of my odes to small joy, carefully edited into A4 sized&nbsp;pages you can print out and color however you like! do them together&nbsp;w your kids during a dreary lockdown weekend, challenge your roommate to a speedrun coloring session, doodle-fill one&nbsp;during a zoom meeting, go wild! I'd love to see what you come up w, please show me your art (if you like) &lt;3</p>
<p class="text-justify">there are 20 pages in the book, including some not-yet-released dailies, as well as&nbsp;3 exclusives <em>only found in this collection</em>!&nbsp;</p>
<p class="text-justify">this collection is PWYW, if you want to support my art and the work i did putting this together-&nbsp;I appreciate you! but also pls&nbsp;don't feel bad if you can't or won't throw money at it, i made it PWYW for a reason, these are terrible times across the dang board&nbsp;and you deserve to enjoy whatever you can enjoy.&nbsp;&nbsp;&nbsp;</p>
<p class="text-justify">take care,</p>
<p class="text-justify">folmer</p>
<p class="text-justify"><br></p>
<p class="text-justify"><br></p>
<p class="text-justify">&nbsp;</p>
<p class="text-justify"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwMzgucG5n/original/xkjj7n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwMzkucG5n/original/HLFDax.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwNDIucG5n/original/MU%2BKcK.png]]
<p class="text-center"><strong><em><br></em></strong></p>
<p><strong><em><a href="https://snaxwell.bigcartel.com/product/of-grub-grain" target="_blank" rel="nofollow noopener">Physical copies now available from my shop!!</a><br></em></strong></p><p><strong><em>OF GRUB &amp; GRAIN </em></strong><strong><em>is a short, system agnostic, tabletop minigame for your&nbsp;adventure rpg about the crafting and cooking of food,&nbsp;fodder and fare.</em></strong></p>
<p>Grub is a tabletop roleplaying <em>minigame</em>, which is to say, it is meant to be played alongside your favourite ttrpg campaign, to help break the rules monotony of long term play and add a dash of depth and fun to the more interstitial moments of a larger system. It contains mechanics for a party of players to gather ingredients, make recipes, select accompaniments and try to craft a delicious meal in harmony! Whether your group is stuck at camp, with scarce resources available, or preparing to feed a family of nobles at a grand feast, Grub is meant to be adaptable all sizes and complexities of meal. <br></p>
<p><strong>WHAT YOU WILL NEED TO PLAY:</strong><br></p>
<p>3-6 players&nbsp; - Grub is GMless, if you are playing a system with a GM, they join in or sit out.&nbsp;</p>
<p>Polyhedral dice sets (or digital dice roller), ideally one set per player, but they could be shared.&nbsp;</p>
<p>pen/pencil + paper <br></p>
<p>30-60 minutes<br></p>
<p>&nbsp;Of Grub &amp; Grain includes 10 recipe cards that can be printed out and filled in!&nbsp; <em><br></em></p>
<p><em>I'd love to see/hear about the meals you make - find me on <a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener">twitter</a><br></em></p>
<p><br></p>
<p></p>
<p><strong>Special thanks </strong>to my rad play testers, the Brain Trust discord, and also Jonathan.<br><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener"><br></a></em><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener"></a></em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQ2MjMuanBn/original/KQgHoN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzAuanBn/original/N9rkdO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzEuanBn/original/VCQMKA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzMuanBn/original/8XP6wQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzQuanBn/original/lJn5y%2B.jpg]]
<p>A scary noise in the night has spooked your poor rabbits, and now all 100 of them have scattered across the valley! Run, climb, jump, and call out commands to your darling bunnies to bring them home to safety in this short n' sweet puzzle platformer — but make sure to be home before dark.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDUucG5n/original/5yFoXm.png" loading="lazy"></p>
<ul><li>A picturesque valley with 100 rabbits to rescue</li><li>Various secrets and collectibles to discover</li><li>Several different types of rabbits, often with unique abilities for solving puzzles</li><li>Charming, handcrafted pixel visuals with a wonderful soundtrack to match</li><li>Did we mention bunnies?</li></ul>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDcucG5n/original/e714Io.png" loading="lazy"><br></p>
<p>Along your way, beware the shapes in the darkness. Your rabbits aren't the only creatures in the valley, and the other ones may not be as friendly. Make sure you get home before dark! They almost look kind of cute, though...<br>Thankfully, the other faces in the valley certainly are friendly ones. Now who's this cutie with a bunny in her arms?</p>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDkucG5n/original/2Xez2b.png" loading="lazy"><br></p>
<p><br></p>
<p>You can get the soundtrack&nbsp;<a href="https://corywelchmusic.bandcamp.com/album/oh-jeez-oh-no-my-rabbits-are-gone-ost" target="_blank" rel="nofollow noopener">here!</a></p>
<p>Made with love by&nbsp;<strong>Studio Nevermore (</strong><a href="https://twitter.com/StudioNevermore" target="_blank" rel="nofollow noopener">@StudioNevermore</a>) -- Main&nbsp;Developer&nbsp;<strong><a href="https://twitter.com/PolarBun" target="_blank" rel="nofollow noopener">@PolarBun</a></strong></p>
<p><span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/1VH1md3zFf4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjMucG5n/original/nb1%2Bs%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjQucG5n/original/R272hI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjUuanBn/original/lVPDQP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjYuanBn/original/IUYOdF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjcuanBn/original/U92Ta%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjgucG5n/original/fPnxdw.png]]
<p></p>
<h1>You have two stats: HMM and FUCK.</h1>
<p><em>You are Monster Slayers of the Jackal Conclave, and you're investigating a strange incident...</em></p>
<p>Inspired by <em>The Witcher</em> by Andrzej Sapkowski,&nbsp;On The Path is a hack of Honey Heist by Grant Howitt, where players take on the roles of Monster Slayers investigating a mystery after receiving a strange letter.
</p>
<p>Included are generation tools for GMs to create the adventure, and adaptations of Honey Heist's much-loved mechanics.
</p>
<p>Download contains:
</p>
<ul><li>Stylised PDF
</li><li>Printer-friendly PDF
</li><li>Plain text, dyslexia-friendly font PDF
</li></ul><p>Purchase this game at $3.50 or higher to receive the adventure frame&nbsp;<em>The Vengeful Sea</em>, a ready-to-play story with minimal GM prep required.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzAzOC81ODg2MzUyLnBuZw==/original/V7Elcr.png]]
<p>CW: death, grief, loss, family history</p>
<p>On the Wings of a Red Dragonfly is a ttrpg&nbsp;&nbsp;that revolves around a Japanese Buddhist holiday of Obon, where players communicate through abstract means&nbsp;with a spirit that has come back to visit for a three day festival.</p>
<p><br></p>
<p>Note that the spirit is someone the characters know not someone the player knows.</p>
<p></p>
<p>Cover image by Milena Briceño&nbsp;<a href="http://edge-sama.artstation.com" rel="nofollow noopener">http://edge-sama.artstation.com</a>&nbsp;</p>
<p>Layout by Sin Posadas&nbsp;<a href="http://diwatamnl.itch.io">diwatamnl.itch.io</a><br><a href="https://twitter.com/diwatamanila" rel="nofollow noopener">@diwataMANILA</a> on Twitter<br><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjUucG5n/original/XUsjSt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjYucG5n/original/5CnrGY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjcucG5n/original/XtVCDz.png]]
<p>"Do you believe in fairies? Say quick that you believe. If you believe, clap your hands!" ~James M. Barrie</p>
<p><br>You and your magical friends are throwing a surprise birthday party for someone special. In this enchanted land, anything can happen.&nbsp;Will there be a happy ending?<br><br>Life is a fairytale in this magical micro-RPG! Choose from 6 character options:</p>
<ul><li>Fairy Godmother</li><li>Enchanted Animal</li><li>Kindly Old Wizard</li><li>Nanny</li><li>Wise Witch</li><li>Pixie</li></ul>
<p>Each character specializes in a different skill, and is equipped with a unique tool to help them in their tasks.</p>
<p><img src="https://img.itch.zone/aW1nLzQ3NDk2NDEucG5n/original/jymwhP.png" loading="lazy"><br><br>Background image by <a href="https://pixabay.com/users/darkmoonart_de-1664300/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4369116" style="font-size: inherit" rel="nofollow noopener">DarkmoonArt_de</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4369116" style="font-size: inherit" rel="nofollow noopener">Pixabay</a>; game description art by <a href="https://pixabay.com/users/jo-b-246441/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5442762" rel="nofollow noopener">Jo-B</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5442762" rel="nofollow noopener">Pixabay</a>;&nbsp;cover image by&nbsp;<a href="https://pixabay.com/users/pixel2013-2364555/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2160539" style="font-size: inherit" rel="nofollow noopener">S. Hermann &amp; F. Richter</a>&nbsp;from&nbsp;<a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2160539" style="font-size: inherit" rel="nofollow noopener">Pixabay</a>; internal game art&nbsp;by Gordon&nbsp;Johnson from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3244163" rel="nofollow noopener">Pixabay</a>.&nbsp; All free for commercial use.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODMuanBn/original/8f47bv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk3MTQuanBn/original/tWxZN0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODUuanBn/original/umP78x.jpg]]
<h3 style="color: #41658f"><p><br>Somewhere in the Old West, there lies a cabin full of corpses.</p></h3>
<p style="color: #41658f"><strong>If you had arrived moments sooner, you might have been one of them.</strong></p>
<p>It all started on Christmas Day, when The Old Sheriff of New Town was murdered. In the days that followed, several dangerous strangers would make their way to the Mount Inn, an isolated shelter on the mountain path between New Town and Old Town, and kill each other.<br></p>
<p></p>
<p>Now it’s down to you to untangle their motives and piece together the bigger picture from the gruesome aftermath.</p>
<p></p>
<p></p>
<p>Read about Once Upon a Crime in the West on <a href="https://www.rockpapershotgun.com/2019/05/16/once-upon-a-crime-in-the-west-review/" rel="nofollow noopener">Rock, Paper, Shotgun!</a></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI2NTk3ODQucG5n/original/VGFhpX.png" loading="lazy"></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p style="color: #7a8899"><em>System Requirements:</em><br><em>OS</em>: Windows 7 64-bit or later<br><em>Processor</em>: Quad-core Intel or AMD processor, 2.5 GHz or faster<br><em>Graphics</em>: NVIDIA GeForce 570 GTX or AMD Radeon 6970 HD series card or higher<br><em>Memory</em>: 4 GB RAM</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vQxmHSteY6k" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDIucG5n/original/Xg1GUJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDMucG5n/original/byHmYH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDQucG5n/original/nb0L5f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDUucG5n/original/bb4zcj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDYucG5n/original/CHcHai.png]]
<p>There are pivotal moments in every child’s life that shape who they become. One Child’s Heart is a tabletop roleplaying game that invites players to take the role of child welfare professionals participating in a new mental health care memory exploration experiment. The Central Limbic Engagement Recovery System (CLERS – pronounced, “clears”) brings characters into the memories of these key moments to give support and guidance to a child who needs both.</p>
<p>Professionals help create connections and teach resilience to children who desperately need someone to care about them.</p>
<p>During the Memories, the Professionals interact with the child through conversation, finding ways to get the child to open up and hear the support the professionals are offering. The Professionals walk into the middle of a memory that they don’t have any context for, especially at the beginning of the game. They need to move beyond the surface of what’s happening to discover why the experience is so impactful to the Child find a way to build trust and get them to open up before the memory ends.</p>
<p>This unique game uses its own innovative dice mechanic and token system to symbolize the Professionals forging meaningful connections with the Children. Each Professional is specifically equipped to build a connection with the Children through their Approach – leading with their Heart or trusting in their Mind – and individual Qualities. The facilitator takes on the important role of the Advocate, guiding the Professionals through the Memories of the Child, and portraying the Children in some of their toughest moments.</p>
<p>The heart of this game centers on the power of a conversation. People that have a willingness to reach out to another human being in need have the power to effect real change. In this game, as in life, connections start by being brave and having a conversation. That can begin by simply asking, “Are you OK?”</p>
<p>Easy to learn and focused on creating emotional connections, One Child’s Heart allows for heartfelt roleplaying focused on hope in the face of despair. Will you make a difference, show compassion, and touch one child’s heart?<br></p>
<p>What You Need to Play<br>&nbsp;• A minimum of 3 six-sided (d6) dice<br>&nbsp;• 2-5 people including the Advocate<br>&nbsp;• A pencil or pen<br>&nbsp;• Character sheets<br>&nbsp;• 2-4 hours<br>&nbsp;• Optional: Physical tokens to act as Connection Tokens</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzIucG5n/original/XTl%2BeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzMucG5n/original/XBzsjO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzEucG5n/original/DIzzRn.png]]
<p><em>One&nbsp;Hour Worldbuilders&nbsp;</em>is a card game for four players designed to help you collaboratively build a world in under an hour. Rather than using genre conventions or tropes, you begin imagining your world using&nbsp;details from your own life&nbsp;as inspiration -&nbsp;so every&nbsp;world feels fresh,&nbsp;urgent&nbsp;and&nbsp;personal.</p>
<p><img src="https://img.itch.zone/aW1nLzU2NDg1MTQucG5n/original/BYZiPg.png" loading="lazy"><em><br>1HWB </em>requires no prep, no GM and no experience with tabletop  RPGs. All you need is a printer, some scissors and an hour of your  time. It's great for tabletop campaigns, collaborative creative  projects, or for a standalone creative game on the go. 
<br></p>
<figure><img src="https://img.itch.zone/aW1nLzU2NDg1OTYucG5n/original/tjX5zN.png" loading="lazy"><br></figure>
<p><em>1HWB</em> uses a system of prompts and structured questioning that is accessible for beginners and intricate for experienced creators. The prompts and questions emphasize forgotten histories, conflicting ideologies, loss, and the textures of daily life. I've played it with strangers, friends, family and loved ones - and every world I've built has felt distinct, compelling and unique to the people who helped make it.</p>
<figure><img src="https://img.itch.zone/aW1nLzU2NDg2NjYucG5n/original/mGF%2FeP.png" loading="lazy"><br><br><a href="https://gumroad.com/kaelanbuildsworlds" rel="nofollow noopener">Physical copies of One Hour Worldbuilders are also available via Gumroad</a>. If you live in the Toronto area I will deliver them to you personally!&nbsp;<br></figure>

[img width=500 [https://img.itch.zone/aW1nLzU1NDg3MDMucG5n/original/FAnM7f.png]]
<p>After years of imprisonment and experimentation in a Sentinel prison, an Oneon shatters its containment pod and begins the long road to escape. Can it evade the sentinels and their minions, and rescue its fellow Oneons along the way?</p>
<p>Oneons is a short, experimental sci-fi broughlike (coffee-break roguelike/roguelite) with 12 floors of tactical combat, dangerous enemies, and useful items. Strategize your limited health and energy as you descend through the increasingly difficult floors. Survive. Die. Fight again.</p>
<figure><img src="https://img.itch.zone/aW1nLzQxOTU5MzQuZ2lm/original/neMPzS.gif" loading="lazy"><br></figure>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NDUucG5n/original/Q0UuQ6.png" loading="lazy"><br></p>
<ul><li>Navigate through twelve floors filled with unique and dangerous enemies, some with powers of their own.</li><li>Balance careful use of combat, energy, and your unique psionic blast ability to maximize your chances of survival</li><li>Free other Oneons to power up in your quest for freedom</li><li>Discover a story about oppression, faith, and hope</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NDkucG5n/original/CnWDpz.png" loading="lazy"><br></p>
<p>Accessibility matters! Contains several accessibility features, including:</p>
<ul><li>Uses large, high-contrast images and text ideal for low-vision players</li><li>Uses simple, readable font for easy readability</li><li>Entirely playable by keyboard with fully-rebindable keys</li><li>One-hand friendly key bindings setup by default</li><li>Options you can access at any time during the game</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NTAucG5n/original/0vGeHb.png" loading="lazy"><br></p>
<p>If you've never played a roguelike (dungeon crawler) game before, here are some tips and things to know to get the most out of your experience:</p>
<ul><li>To explore, click any square that has adjacent unexplored/black squares, or click on any object.</li><li>Nothing happens until you take a turn. Observe carefully the effects after you move.</li><li>The game is difficult. Expect to die a lot. When you die, you restart from the beginning.</li><li>You can hover your mouse over things to see more information. Look closely at icons and their explanations.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/HOcfiq_ywOs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzQxOTU5NjIuZ2lm/original/Bwxzqo.gif]]
<p>Welcome to Oniria - a place where Dreams and Nightmares come to life and make the city their own. In this game you play as a member of the Quixotic Society and are tasked with investigating and containing the Reveries when they start becoming too messy.&nbsp;<br></p>
<p><span></span></p>
<p>Inside this book&nbsp;you will find&nbsp;<br></p>
<p>- 4&nbsp;new roles (or backgrounds)<br>- intriguing abilities and&nbsp;dreamy items<br>-&nbsp;rules for Reveries (the manifestation of one's psyche)<br>- enigmatic characters who will assist, oppose or entertain you<br>-&nbsp;descriptions of several&nbsp;exciting locations in Oniria<br>- strange incidents to use as adventure hooks or tales from the past&nbsp;<br>- an introductory adventure to discover Oniria and its mysteries<br>- 48 pages filled with colourful and evocative art</p>
<p>Use your ethereal abilities and extraordinary items to discover what motivates the Reveries, decide whether you want to help or stop them and explore the marvelous city of Oniria!</p>
<p class="text-center">---</p>
<p class="text-center"><strong><em>The print version is available from </em><em><br>- Rook's Press:&nbsp;<a href="https://www.rookspress.com/products/onirias-slumber" rel="nofollow noopener">https://www.rookspress.com/products/onirias-slumber<br></a></em></strong><strong><em>- IglooTree:&nbsp;<a href="https://iglootree.com/onirias-slumber-461-p.asp" rel="nofollow noopener">https://iglootree.com/onirias-slumber-461-p.asp<br></a>- Exalted Funeral: </em></strong><a href="https://www.exaltedfuneral.com/collections/neoteric-codices/products/onirias-slumber-pdf" rel="nofollow noopener"><strong><em>https://www.exaltedfuneral.com/collections/neoteric-codices/products/onirias-slu...</em></strong></a><strong></strong><strong></strong><strong>&nbsp;</strong></p>
<p>The character sheet is available in the "Demo" section.</p>
<p>This book is many things at once. It was first thought of as a small setting for Troika!, then it was written into a small hack and now it's a bit of both. You can play it on its own, or use its setting as a sphere for <em>Troika!</em>.<br></p>
<p>A very late submission to the Dreaming Jam.</p>
<p><em>Oniria's Slumber</em> is an independent production by Jean Verne and is not affiliated with the Melsonian Arts Council.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODgzOTguanBn/original/1xUmJb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODg0MDAuanBn/original/D7suou.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODg0MDEuanBn/original/Ge8gnO.jpg]]
<p><strong>The Regime</strong> never stops, devouring planets and hope since the beginning of times. Once <strong>The Weapon</strong> is complete, resistance won’t exist even in dreams.</p>
<p>You are a spy, undercover behind The Regime’s lines, the only person willing to do what’s necessary. <strong>Operation Swordbreak</strong> - sabotaging The Weapon before it’s ready to destroy all life - is your only chance. That is, if <strong>The Hunters</strong> don’t get you first…</p>
<p>_____________</p>
<p><em><strong>Operation Swordbreak</strong></em> is a solo RPG about paranoia and struggling against an unbeatable, oppressive system. It’s a game about making sacrifices and fighting for hope, even when all hope seems to be lost.</p>
<p>You are likely to die, and unlikely to be remembered.<br>_____________</p>
<p><strong>Content Warning:</strong> Enclosed inside, you will find themes that can relate to murder and assassination, cosmic horror, destruction, tense social interactions, betrayal and monstrosities.</p>
<p>_____________
</p>
<p>This game was created for the “<a href="https://itch.io/jam/wretched-jam">Wretched &amp; Alone Jam</a>” , and was directly inspired by <a href="https://loottheroom.itch.io/wretched">"The Wretched"</a>, by Chris Bissette, and by <a href="https://sealedlibrary.itch.io/wretched-alone-srd">The Wretched &amp; Alone SRD</a>.</p>
<p>It also takes inspiration from Star Wars; Mobile Suit Gundam; Metal Gear Solid; and Cold War espionage thrillers with an added pinch of Cosmic Horror.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MTkucG5n/original/Dqt37X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjMucG5n/original/accGRK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjYucG5n/original/EOK3mA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjUucG5n/original/i78FWZ.png]]
<p>Optivox is a 3D Voxel Editor focused on creating cube-based models for game development. By using advanced optimization methods, it gives your voxel projects more performance for amazing visuals!<br></p>
<p>Whilst also being a standalone voxel editor, Optivox can import previously created .vox models, meaning you can stick with your favourite voxel editors and still benefit from the advanced optimization!</p>
<p><br></p>
<p>Please note, this program is currently in a beta form with some bugs in the program. Due to this, the price is reduced and is due to increase as more features are added.<br></p>
<p class="text-center">Visit <a href="https://optivox.net/" rel="nofollow noopener">https://optivox.net/</a> for more information on the program!</p>
<p><strong>Join the Discord for information on development, as well as giving questions and feedback: <a href="https://discord.gg/jzeTa2f" rel="nofollow noopener">https://discord.gg/jzeTa2f</a><br></strong><strong>And check out my Twitter for key updates and other stuff I'm working on: <a href="https://twitter.com/nateonus" rel="nofollow noopener">https://twitter.com/nateonus</a></strong><strong></strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MDUucG5n/original/SwxykX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MDkucG5n/original/t0V77C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MTAucG5n/original/wX8FnO.png]]
<p>A visual novel where you play as a divorced dad trying to order the perfect pizza.<br></p>
<p>This game is our submission for the 2019 NanoReno Game Jam. It was made in the month of March.&nbsp;</p>
<p>As a divorced dad you learn through exploring the items in your apartment and navigate difficult conversations in order to find the perfect pizza.</p>
<p>Abby, your daughter is meeting Margot your girlfriend for the first time. It's an&nbsp; awkward situation that only the right pizza toppings can solve.&nbsp;</p>
<p>Explore their back stories and make a tough decision and everything will be FINE. No weird shit will happen.</p>
<p>... We swear.</p>
<p><br></p>
<p>Thanks for playing!</p>
<p>All art, music, writing and scripting was done by the Rocket Adrift team,&nbsp;</p>
<p>Lindsay Rollins, Patrick Smith &amp; Titus McNally.</p>
<p>This game was made with Ren'Py.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/1Mz9wubOAPo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzUucG5n/original/BmZLA8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzcucG5n/original/GEmrIC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzgucG5n/original/YeHwGA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzkucG5n/original/RpD6N%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5Njc0OTQucG5n/original/A1kNaf.png]]
<$list filter="[is[current]has:field[url]]">
''Original Url'': {{!!url}}&nbsp;&nbsp;&nbsp;
</$list>
<p>Big Brother has arrived - and it’s you. Investigate the lives of citizens to find those responsible for a series of terror attacks. Information from the internet, personal communications and private files are all accessible to you. But, be warned, the information you supply will have consequences…</p>
<p>Orwell is a new governmental security program that has the power to survey the online presence of every person in The Nation. It can monitor all personal communications and access any computer. To preserve the privacy of citizens, human researchers examine the data Orwell finds and decide which pieces of information should be passed on to the security forces, and which should be rejected.<br><br>Selected from thousands of candidates, you are Orwell’s first human researcher. And when a terror attack rocks the Nation’s capital city of Bonton, Orwell, and you, are immediately put to the test. Starting with a single person of interest, you'll help the security forces build out and profile a network of potential culprits.<br><br>But are these people really terrorists? What does the information you reveal to Orwell say about them? What if you find out things about them that not even their loved ones know? What is the real price of maintaining the security that the Nation is yearning for?</p>
<h2>Key Features</h2>
<p><strong>Investigate the digital lives of citizens.&nbsp;</strong><br>Search web pages, scour through social media posts, dating site profiles, news articles and blogs to find those responsible for a series of terror attacks.<br><br><strong>Invade the private lives of suspects.&nbsp;</strong><br>Listen in on chat communications, read personal emails, hack PCs, pull medical files, make connections. Find the information you need to know.<br><br><strong>Determine the relevance of information.&nbsp;</strong><br>Only the information you provide will be seen by the security forces and acted upon. You decide what gets seen and what does not, influencing how the suspects will be perceived.<br><br><strong>Secure the freedom of the Nation.&nbsp;</strong><br>Find the terrorists so the citizens of the Nation can sleep safe, knowing Orwell is watching over them.<br></p>
<h2>Praise for Orwell:</h2>
<p>“Grabs the problem of how we balance our own liberty and our safety and turns it into a thrilling adventure.” –&nbsp;<strong>Polygon</strong>&nbsp;</p>
<p>“In an age where so much personal information is willingly released by so many, Orwell brilliantly explores the implications of this data being misinterpreted.” –&nbsp;<strong>GameSpot</strong>&nbsp;</p>
<p>"A harrowing look into a reality where Big Brother is always watching" -&nbsp;<strong>Rock Paper Shotgun</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/i8jUWeqlTMU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDkuanBn/original/o997gi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTAuanBn/original/BbjSsm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTIuanBn/original/kYnrBp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTEuanBn/original/OGcBfs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTMuanBn/original/hmgHK2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDcuanBn/original/1am22f.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTQuanBn/original/sBK5L4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDguanBn/original/CAKN84.jpg]]
<p>by <a href="http://futureproofgames.com" rel="nofollow noopener">Future Proof Games</a></p>
<p>The last thing you remember is receiving an unsatisfying answer. A plunge through the fundamental chaos takes you to a place of bones. Great power can be found within the Ossuary, but those who are not lying to themselves are lying to you.</p>
<p>Ossuary is a dark, funny, puzzling game about talking to people and corrupting them with sins that are really virtues. It's a stark, unsettling satire where you cure cabbages of being people and expose the terrible lies that we tell ourselves so we don't have to change. It's inspired by Discordianism, a postmodern nonsense religion.</p>
<p>The prequel demo, The Hodge-Podge Transformer, can be downloaded for free and consists of story, dialogue, and puzzles that don't appear in the full game.</p>
<p>Ossuary was designed by Gregory Avery-Weir, creator of "<a href="http://futureproofgames.com/games/majesty" rel="nofollow noopener">(I Fell in Love With) The Majesty of Colors</a>," "<a href="http://futureproofgames.com/games/dragon" rel="nofollow noopener">How to Raise a Dragon</a>," and "<a href="http://ludusnovus.net/my-games/looming/" rel="nofollow noopener">Looming</a>."</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pFg5ytdgkPw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNTkucG5n/original/0SvqjJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjAucG5n/original/aA3uwz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjEucG5n/original/ze3p0W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjIucG5n/original/YAcIk%2F.png]]
<p><em>Others</em> is a one player game for exploring the world of those we see as different than ourselves. The game encourages us to look at people we see as different from us and ask questions about them. This one player experience will not ask us to directly engage with the Others, only to look at them.</p>
<p>Based on research and studies on how we perceive others, and how we value people like ourselves,&nbsp;<em>Others</em> is a series of exercises designed to help us humanize each other. It is a simple, accessible exercise.&nbsp;<br><br>CW: Othering</p>

[img width=500 [https://img.itch.zone/aW1nLzMwNDMzNDMucG5n/original/AwjUuX.png]]
<p>Our Innermost Thoughts is a small collection of five RPGs played mostly solitaire. They are experiences about how to find your passion and your voice despite the flaws you have, about how to reconcile the fact that humankind's reign on earth has brought destruction to nature, about how communicating with others who do not look or talk like you is difficult, about observing others intentionally can begin the process of self-reflecting on our means of wrongful judgments of others, and about the beauty of finding joy in the lives and stories of others. These experiences ask a lot of questions, forcing you to reflect on who you are, your background, your status, and possibly even some aspects that have been hidden up to now.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzM4OTI4NTAuanBn/original/S7cQK4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzYxODM5MzMucG5n/original/PeKlkQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzYxODM5MzIucG5n/original/%2F3mme3.png]]
<p>You and a group of 2-5 friends create the story of a sailor trying to find their way back home through a string of islands controlled by a pantheon of powerful and petty gods.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0NDcuanBn/original/6D%2FJxg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0MzYuanBn/original/cDX7pE.jpg]]
<p style="width:350px; font-size:24px">Homepage</p>
<p style="width:350px"><a href="http://www.out-for-delivery.com" style="font-size: inherit" rel="nofollow noopener">out-for-delivery.com</a></p>
<p style="width:350px">Out For Delivery is a slice-of-life 360° interactive documentary. It follows a food delivery courier in Beijing on January 23, 2020, the day before Lunar New Year's Eve, and the day Wuhan shut down due to COVID-19.</p>
<p style="width:350px; font-size:24px">Credits</p>
<p style="width:350px">Directed, produced &amp; programmed by Yuxin Gao, music &amp; sound design by Lillyan Ling, art &amp; UI by Gus Boehling, additional programming by John Bruneau.</p>
<p style="width:350px; font-size:24px">Installation</p>
<p style="width:350px"> When launching the game for the very first time, follow these steps to bypass the standard operating system security checks:</p>
<p style="width:350px">● For <strong>Windows</strong> users: After double clicking the app icon, a warning will pop up. Expand “more
info” and then click “run anyway.”</p>
<p style="width:350px">● For <strong>Mac</strong> users: Please make sure to&nbsp;play the game through the <a href="https://itch.io/app">Itch App</a>. Unfortunately, unlicensed standalone Mac builds no longer work on the newest MacOS. Due to MacOS security scanning, the game may take up to <strong>two minutes</strong> to load. This only happens when it is launched for the very first time.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5OTMwLzUyMDA4MjkucG5n/original/5wr7sL.png]]
<p class="text-justify"><strong>Over My Dead Body</strong> is a local multiplayer game where your goal is to be the first to die. Heal the others! Damage yourself! Kick the bucket!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTIzMTQuZ2lm/original/VNyK2X.gif" width="250" loading="lazy"><br></p>
<hr>
<p class="text-justify">Goofy <strong>characters</strong>, fun <strong>stages </strong>and an overall colorful and<strong> cartoonish style</strong> come together to make up a fast-paced gameplay to share with friends.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMDYucG5n/original/jmpbYa.png" loading="lazy"><br></p>
<hr>
<p class="text-justify">Use the <strong>power-ups</strong> to lose health, heal your opponents or stun them. The first to reach 0 points wins.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NTE4NzQuZ2lm/original/s38gd6.gif" width="250" loading="lazy"> <img src="https://img.itch.zone/aW1nLzQ4NTE4ODEuZ2lm/original/BcCoO%2B.gif" width="250" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTE4ODcuZ2lm/original/L0UToe.gif" width="250" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ4NTE4OTcuZ2lm/original/nZrspx.gif" width="250" loading="lazy"><br></p>
<hr>
<p><strong>Dash</strong> around the stage and <strong>push</strong> your opponents to take away their power-ups... or simply because it’s fun, who are we kidding.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTE5NDAuZ2lm/original/kBkLGp.gif" width="250" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ4NTE5NDcuZ2lm/original/0mgsmP.gif" width="250" loading="lazy"><br></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2ODUucG5n/original/%2FJmnVZ.png" loading="lazy"><br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/VXq03w2Vggs" allowfullscreen="" frameborder="0"></iframe></div>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2ODcucG5n/original/H6A%2FQ%2B.png" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMjUucG5n/original/39QGwX.png" loading="lazy"><br></p>
<hr>
<figure><img src="https://img.itch.zone/aW1nLzQ4NDY2ODkucG5n/original/7FuMAF.png" loading="lazy"><br><strong></strong></figure>
<p><strong>💀 Does Over My Dead Body support online play?</strong><br>It does not, but it can be played online using a program called <a href="https://parsec.app/" target="_blank" rel="nofollow noopener">Parsec</a>.<br><strong>💀 How does Parsec work?</strong><br>Parsec is a software that allows a user to run a game locally and stream it so other people can play remotely. It is designed and optimized for gaming and&nbsp; free to use. You can learn more in <a href="https://parsec.app/" target="_blank" rel="nofollow noopener">their official website</a>.<br><strong>💀 Is the game going to receive updates in the future?</strong><br>It depends on the reception of the game. We will consider developing additional content if we see people are interested.</p>
<p>More questions? Don’t doubt to get in contact!</p>
<p></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2OTAucG5n/original/ulv%2FXJ.png" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUwNDg0NzgucG5n/original/3jdmvt.png" loading="lazy"><br></p>
<p class="text-justify"><strong>Ragdoll Rain</strong> is a small indie studio from Madrid, Spain. Created with the goal of learning, working as a team and turning our passion for video game development into reality, Ragdoll Rain isn’t but a group of friends who like to meet weekly at the bar and debate about nerdy stuff.</p>
<p class="text-justify">If you want to know more about us, check out <a href="https://ragdoll-rain.itch.io/"><strong>our web profile</strong></a>!</p>
<p class="text-center">
<a href="mailto:ragdollraincontact@gmail.com" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4NTIwNTEucG5n/original/ospoSX.png" alt="email" title="email" width="50" loading="lazy"></a> &nbsp;&nbsp; <a href="https://twitter.com/Ragdoll_Rain" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4NTIwNjQucG5n/original/HzPYzr.png" alt="Twitter" title="Twitter" width="50" loading="lazy"></a> &nbsp;&nbsp; <a href="https://www.youtube.com/channel/UCKZ4WaxMXJkNEtZfpoemeUg" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4NTIwNzAucG5n/original/3bctub.png" alt="YouTube" title="YouTube" width="50" loading="lazy"></a></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2OTYucG5n/original/P4JQAd.png" loading="lazy"><br></p>
<p class="text-justify">If you have any suggestions to improve <strong>Over My Dead Body</strong>, or want to share your overall opinion on the game, we’d be pleased to hear it. Fill in the form below!</p>
<p class="text-center"><strong><a href="https://forms.gle/4hJoHwGtsfccQMJU9" target="_blank" rel="nofollow noopener">Survey link</a></strong></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY3MDEucG5n/original/vU8MuZ.png" loading="lazy"><br></p>
<p class="text-justify">We want to thank our friends for their support and the hours spent helping us test the game, and the <a href="https://github.com/agens-no/PolyglotUnity" target="_blank" rel="nofollow noopener"><strong>Polyglot Project</strong></a> for providing such an amazing translation tool.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMzIucG5n/original/FM%2BX%2Fq.png" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/VXq03w2Vggs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODIucG5n/original/P1q5vc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxNzkucG5n/original/yu8okf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODEucG5n/original/jwqzAG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODUucG5n/original/eSieeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODQucG5n/original/GVS8js.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODMucG5n/original/qp2ZiL.png]]

<p>In August of 2014, a demo innocently appeared on the PlayStation Store. It had a spooky old tombstone with <em>P.T.</em> painted on it, sitting silently in a wooded area. Playing this demo would take players to a rather ordinary hallway, one that would lead to one of the most terrifying horror games ever made.</p>
<p>And now you can't get it any more.</p>
<p>Even just as a short demo,&nbsp;<em>P.T.&nbsp;</em>created a powerful atmosphere of terror, dragging the player into its ordinary environments and steadily filling them with dread. Through its steady erosion of reality, striking visuals, cryptic completion criteria, and the chilling ghost, Lisa, it creates a fear that can sicken in its intensity, leaving players begging for the ghost to just appear and end it all.</p>
<p>It was to show what Hideo Kojima, the man behind&nbsp;<em>Metal Gear</em>, could do with horror and the&nbsp;<em>Silent Hill</em>&nbsp;series. It was to set a new bar for horror. Then, not even a year later, it was gone, pulled from the store for nebulous reasons as relations between its creator and Konami broke down.</p>
<p><em></em><em>P.T.: A Video Game Ghost Story</em>&nbsp;is an unofficial investigation into the strange history behind this lost horror game, how players came to solve its complex puzzles, and what makes it so effective at scaring its players. Featuring interviews with the first player to complete it, the Let's Players who broke its mysteries,&nbsp;<em>P.T.</em>&nbsp;speedrunners, video game historians, and Konami staff, it looks to shine a light on what made the experience so compelling, why we subject ourselves to these horrors, and what will happen as this fearful experience fades from memory to become its own real-world ghost story.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MjgwLzEyMTc3OTMucG5n/original/0Br6HE.png]]
<p>It is an side-scroller game contains some mini games based on mindfulness technique to relieve stress.</p>
<p>I've collaborated on this project as a game developer and game designer.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/E1FGZ50FyG0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU2OTYwMDAucG5n/original/7knPjo.png]]
<p>A coloring book you can walk around!</p>
<p>Explore the sea side town of Paint, and color in the entire world. Paint on building, birds and bee's... along with everything else.</p>
<p>Paint Game is exactly what it says on the tin, an Interactive Coloring Book for all ages and abilities!<br><br>Save your maps and share them online, and take pictures to share with your friends! Show the world your beautiful town!</p>
<p><strong>Featuring:</strong></p>
<p>Music by Maize Wallin! <br>Find out more about Maize @ their&nbsp;<a href="https://www.maizewallin.com/" target="_blank" rel="nofollow noopener">website</a> or&nbsp;<a href="https://twitter.com/MaizeWallin" target="_blank" rel="nofollow noopener">twitter</a> and you can also support <a href="http://patreon.com/maizewallin" title="http://patreon.com/maizewallin" target="_blank" dir="ltr" class="" rel="nofollow noopener">their patreon<br></a></p>
<p>Full intergrated map sharing services</p>
<p>1 town, with an accompanying sea (may contain tree's)</p>
<p>2 control methods;&nbsp;<em>keyboard and mouse</em> or <em>mouse only</em></p>
<p>Configurable keyboard&nbsp;controls<br></p>
<p>Togglable corsshair</p>
<p>Advice from the towns folk about how you colour their town</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/r_Bf7zimv_s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjAucG5n/original/uMvsPb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzI0MTU4NjEucG5n/original/o%2BnY93.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzI0MTU4NjIucG5n/original/bSwhG1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjIucG5n/original/f4EMst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjUuanBn/original/4tXmzu.jpg]]
<h5>Confirmed to support Blender 2.83 - 2.92</h5><h4>See full instructions in <a href="https://dietinghippo.itch.io/palette-studio/devlog/224145/readmetxt">Readme.txt</a>.</h4>
<p>&nbsp;&nbsp;&nbsp; Palette Studio is a Blender Add-On that simplifies creation of game sprites made from 3D renders. It has palette selection with the option to select individual colors, a 1/8/16-angle camera rig, rotating lighting, and the ability to toggle the render alpha channel on and off.</p>
<p>&nbsp;&nbsp;&nbsp; This Add-On provides a streamlined method of generating sprites for games with limited palettes and multiple render angles such as DOOM. However, any palette file may be selected - providing infinite options for your indexed color creations!</p>
<p><strong>Example Output:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzUyMzA4NjAuZ2lm/original/aZnGm8.gif" loading="lazy"><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/v7nYdrBVxFs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI1MDMzLzUyMzA5NDYucG5n/original/f7bjEX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI1MDMzLzUyMzMxNzUuZ2lm/original/bxZZ%2FP.gif]]
<p><img src="https://img.itch.zone/aW1nLzQ5MzQ5NzQucG5n/original/qsEtut.png" loading="lazy"></p>
<p><strong>Paper Boats</strong> is a small, experimental game about sharing and contemplating. There's not much to do, no enemies to kill or puzzles to solve. You can just look around, interact with the things around you and take screenshots.<br></p>
<p>Every once in a while, though, a paper boat will come sailing and stop in front of your dock, carrying a message for you, written by a stranger. Maybe it's a kind word of encouragement, or somebody emptying their worries into the void.</p>
<p>Good thing is that you can also send a message in your own paper boat, and let it sail for a stranger to read.</p>
<p>When you need a small break from reality, you can just hang around on the dock, watch the day go by and read messages from strangers.</p>
<p>The concept for the game is nothing new; you can find another examples of the mechanic in <a href="https://awkwardsilencegames.itch.io/thethingswelostintheflood" target="_blank">The Things We Lost In The Flood</a> and in <a href="https://store.steampowered.com/app/1070710/Kind_Words_lo_fi_chill_beats_to_write_to/" target="_blank" rel="nofollow noopener">Kind Words (lo fi chill beats to write to)</a>, which greatly expands and improves upon the concept. <strong>Paper Boats&nbsp;</strong>is just my own, simple&nbsp;take on the genre and an excuse for me to release something interactive, albeit small.</p>
<p>I&nbsp;hope you enjoy it.</p>
<p><strong>NOTE:</strong> In order to be as inclusive as possible, please try to write messages in English. Even if your English isn't that good, people won't judge =]<br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwNzMucG5n/original/wJtb%2Fb.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp;&nbsp;Looking around in a serene lake environment.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp; Capturing high-resolution screenshots.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp; Receiving anonymous messages from strangers.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp; Sending anonymous messages to strangers.<br></figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5MzUyMjUucG5n/original/k3mOq0.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p> <img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp; <strong>Mouse&nbsp;</strong>to look around.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp;&nbsp;&nbsp;<strong>Left click</strong> to interact.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp;&nbsp;<strong>Right click</strong> to zoom in.<br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy">&nbsp;&nbsp;<strong>P</strong> to take a screenshot.<br></p>
<p>You can view your screenshots through the options menu.</p>
<p><strong><br></strong></p>
<p><strong>DISCLAIMER</strong>
</p>
<p>I don't possess a way to thoroughly playtest the Mac and Linux builds so I can't promise they'll be working perfectly.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzkxMjYucG5n/original/f0o%2Fvu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzUyMTUucG5n/original/%2FgGkAb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzkxMjUucG5n/original/JSpxm1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzUyMTQucG5n/original/WV5mGk.png]]

<p class="text-center"><strong>ParaMonsters is an adventure/visual novel about tiny monsters investigating a paranormal rumor&nbsp;at an escape room in town.</strong></p>
<p><img src="https://img.itch.zone/aW1nLzQ1ODc0MTcucG5n/original/yGB8qW.png" loading="lazy"></p>
<p>In the quaint, little town of Monsberg, the Paranormal Club is getting ready to kick off their annual club sleepover on All Hallows' Eve. Upon discussing how to spend their evening, the rumor of a haunted escape room piques&nbsp;their interest. They decide there's no better way to celebrate this special event than to check out&nbsp;a potential paranormal event! Is this&nbsp;rumor just that or is it the real deal?<br><br></p>
<p>You play as the president of the Paranormal Club, Faye, as she takes the lead&nbsp;on looking into the mystery behind the eerie escape room.</p>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MjYucG5n/original/9LWbCW.png" loading="lazy"><br></p>
<ul><li>Created for the&nbsp;<a href="https://twitter.com/locallysrcdmi" target="_blank" rel="nofollow noopener">Locally Sourced</a>&nbsp;Fall Bundle!</li><li>Meet an adorable cast of little monsters!</li><li>Feast your eyes upon colorful, simplistic environments and a neat art style!</li><li>Take on a&nbsp;handful of crafty puzzles!</li><li>Experience a title that&nbsp;can be finished in an evening! (~30 mins to 1hr)</li><li>Available on Windows! <em>(Mac build coming very soon)</em></li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MjkucG5n/original/sdDlmS.png" loading="lazy"><br></p>
<ul><li><strong>Mouse </strong>- Move Cursor</li><li><strong>Left Mouse Button</strong> - Interact/Advance Text</li><li><strong>Tab</strong> - Open/Close Inventory</li><li><strong>Escape</strong> - Pause Game</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MzMucG5n/original/timEb5.png" loading="lazy"><br></p>
<ul><li>Code, Story &amp;&nbsp;Music (Some):&nbsp;<ul><li>Jay Wilson (<a href="https://twitter.com/ihzzay" target="_blank" rel="nofollow noopener">@jaysonthemoon</a>)</li></ul></li><li>Art, Voice &amp; Add'l&nbsp;Story:&nbsp;<ul><li>Allison M. (<a href="https://twitter.com/amcintoart" target="_blank" style="font-size: inherit" rel="nofollow noopener">@amcintoart</a>)</li></ul></li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4OTgucG5n/original/oej5bS.png" loading="lazy"><br></p>
<p><em>This game had a very short development time (~5&nbsp;weeks) so there's bound to be some bugs. I apologize in advance. If you encounter any, please report them so that they can be fixed in later patches.&nbsp;</em><em>Thank you for your support and stay safe!</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjQzOTAucG5n/original/cDD%2BcY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwNDkucG5n/original/IsAmbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwNjUucG5n/original/d2HMst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwMzUucG5n/original/px7KnY.png]]
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NDY2MTQuZ2lm/original/nIDfyF.gif" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><strong><em>"It's a long walk home..."</em></strong></p>
<p>After finishing her bar tending shift at 3am, Erica Yu encounters a strange man who claims to know her. Before things escalate, the man suddenly disappears. Terrified, Erica reluctantly decides to make her way home... but little does she know, the nightmare has only just begun.</p>
<p>PARANOIHELL is a pixel horror game that takes inspiration from the gameplay of PSX-style survival horror games. Use weapons to defend yourself from enemies, set traps, or hide. But don't be reckless, your resources are limited. Thorough exploration and careful item management will be key to survival.</p>
<h2 class="text-center">- Press -</h2>
<blockquote><strong>"[...] through unsettling art and clever sound design,&nbsp; Paranoihell&nbsp; delivers both a spine-tingling world and pulse-quickening jump scares."</strong></blockquote>
<p><em>- Andrew King,&nbsp; &nbsp;</em><em><a href="https://bloody-disgusting.com/reviews/3609446/review-paranoihell-creepily-effective-retro-survival-horror-game/" rel="nofollow noopener">Bloody Disgusting</a></em></p>
<blockquote><strong>"PARANOIHELL&nbsp;may give it a supernatural slant, but it captures that awful fear that curls up within us when we find ourselves all alone on that long walk home."</strong></blockquote>
<p><em>- Joel Couture,&nbsp; &nbsp;</em><em><a href="https://indiegamesplus.com/2019/09/paranoihell-takes-you-on-a-chilling-walk-home" rel="nofollow noopener">IndieGamesPlus</a></em></p>
<h2 class="text-center">- Content Warning -</h2>
<p>Blood, gore, and strong language</p>
<p>Themes of stalking, and police violence</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI4NDY2MTYuZ2lm/original/HfSX4i.gif" loading="lazy"><br></p>
<ul><li>Explore a surreal, dying city</li><li>Pixel art style that uses modern lighting techniques</li><li>Light RPG elements</li><li>Satisfying melee-combat</li><li>Estimated play time: 1 - 3 hours</li><li>Multiple endings</li><li>Multiple difficulty settings</li><li>Controller Support</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzI4NDY2MzQuZ2lm/original/eydxeT.gif" loading="lazy"><span></span><br></figure>
<p>Thanks for playing &lt;3<br></p>
<p>-lum</p>
<p><br></p>
<p><strong>**********************************************************************************</strong></p>
<h3><strong>Warning:</strong>&nbsp;currently no support for Mac OSX Catalina on itch.io&nbsp;</h3>
<p>The game will run fine via Steam however. If you are running Catalina and want to play the game, I recommend buying it on Steam:&nbsp;</p>
<p><a href="https://store.steampowered.com/app/1160440/PARANOIHELL/" rel="nofollow noopener">https://store.steampowered.com/app/1160440/PARANOIHELL/</a></p>
<p>If you've purchased the game before July 17th, 2020&nbsp; you will be able to redeem a Steam key.&nbsp;</p>
<p>If you are having trouble related to Mac OSX Catalina, send me an e-mail (with a receipt or invoice for the game)&nbsp;at: gamesbylum@gmail.com</p>
<p>**********************************************************************************</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/H644vDdnnB8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDMuZ2lm/original/6SCzZt.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDguZ2lm/original/U%2F7Uks.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDEucG5n/original/6gvSsY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDUucG5n/original/bFRfzJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NzMwODkuanBn/original/fKpVGd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NzMwODYuanBn/original/1u%2FxPM.jpg]]
<p>Languages: English, Español (Latino), Français (France)<br></p>
<p>---</p>
<p>Your name is <strong>Mr. Rabbit. </strong>You're
the proud owner of a little flower shop started with the help of your
mentor, <strong>Ruffle</strong>,
and you're ready to spread the magic of flowers to everyone! The thing is, you've just made a very big sale,&nbsp;and&nbsp;now you're almost out of&nbsp;everything you use to actually sell flowers, like ribbon, floral
tape, and... flowers.</p>
<p>
That's okay, though! That's what delivery is for, and also what hoping-the-folks-who-walk-in-don't-know-enough-about-flowers-to-notice-you-don't-really-have-much-to-offer-them-right-now is for. </p>
<p>While you're at the
counter, you'll meet lovely folks like:<br>- <strong>The Penguin </strong>who
bought your entire inventory for a magic show!<br>- <strong>The Mouse</strong>&nbsp;who's too
small to see from the shop counter!<br>- <strong>The Bear</strong> who barely
says anything, and whose eyes are always in shadow!</p>
<p>
</p>
<p>Of course, these folks are all here for flowers (probably?), so do your best to help everyone walk out happy!</p>
<p>---
</p>
<p><strong>Parcels and Pollen
</strong>is a visual novel with
point-and-click elements about a plucky rabbit florist doing his very best!&nbsp;</p>
<p>Two endings, 20-30 minute playtime.</p>
<p>The
game is free, but if you pay $3 or more you can support me as a
creator and&nbsp;get a digital art book containing the art from the
game, sketches, and a bunch of author's notes. Also available as a text-only PDF in English and Spanish (Latam)!<br></p>
<p>---</p>
<p>Story, Coding, Art: <a href="https://littlerat.itch.io/" target="_blank">littlerat</a><br></p>
<p>Music and SFX:&nbsp;<a href="https://pocket-se.info/" target="_blank" rel="nofollow noopener">Pocket Sound</a><br></p>
<p>Caption Tool for Ren'Py:&nbsp;<a href="https://npckc.itch.io/caption-tool-for-renpy"></a><a href="https://npckc.itch.io/" target="_blank">npckc</a></p>
<p>Translations:<br>Español (Latino):&nbsp;<a href="https://dunkelheyt.itch.io" target="_blank">dunkelheyt<br></a>Français (France):&nbsp;<a href="https://twitter.com/VSGameStudio" dir="ltr" class="" target="_blank" rel="nofollow noopener">VSGameStudio</a></p>
<p>Special thanks to npckc and xxmissarichanxx!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ2ODkucG5n/original/YIgR%2FV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQzMjcxOTAucG5n/original/%2Bfm9su.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ3MDQucG5n/original/FDYM8k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ2OTAucG5n/original/HrcE0r.png]]
<p><em>"The play-based GonParis Method is a simple, smart, and effective way to banish encumbrance forever.&nbsp; Adopt this dungeoneering strategy, and you’ll never be overloaded again."</em></p>
<h1>A Simple Effective Play-Based Method&nbsp;To Banish Encumbrance Forever</h1>
<p><span></span>This game is a tongue-in-cheek tribute to encumbrance rules and other tropes found in beloved dungeon-crawling games.<br></p>
<p>It is a GM-less storytelling game for 3 to 6 players, designed to be played in a few hours with polyhedral dice and no preparation.</p>
<p>Players in this game embody Adventurers who, as a group called a Party, have reached the last level of a Dungeon and defeated the Boss who presided over it. Play starts as Adventurers discover Loot you create. The objects you decide your Adventurer carries home makes up what you pack as their Final Inventory.</p>
<p>If Adventurers hold on to possessions that spark joy, they might feel invigorated and satisfied for the rest of their existence, or at least until their next adventure. But letting go of less emotionally charged but useful Belongings might prove to be a deadly mistake for the Party on their Journey Home.</p>
<h1>Content</h1>
<h5>Replay</h5>
<p>It’s the transcript of a complete play session, edited for your enjoyment, to give you an overview of how the game works. This is inspired by the TRPG (Tabletalk Roleplaying Game) format popular in Japan.</p>
<h5>Complete Rules</h5>
<p>This includes the rules and everything you need to play the game in step-by-step instructions. This game is a collaborative storytelling game. You can jump straight to the GonParis Method and follow its Six Steps without prior reading. However, it works better if one player facilitates your first session by reading the rules in advance.</p>
<h5>Play-Aids and Card Decks</h5>
<p>You will find in the Appendix links to all the Play-aids and Card Decks in both JPG and PDF formats that you will need to play around a table.</p>
<p>Those are also included as a Miro board that you can copy to very easily play the game online.<span></span></p>
<h2>About This "Text-Only" Edition</h2>
<p>This current release is a work-in-progress but&nbsp;it already contains everything you need to play this game.</p>
<p>The sales from this edition will go towards hiring a professional graphic designer to make more legible and visually pleasing versions of the Rule Book,&nbsp;the Play-Aids and Card Decks.</p>
<p>Purchasing this current edition will get you:</p>
<ul><li>The Rule Book as it is currently laid-out with any future&nbsp;text updates;</li><li>The updated versions of the Play-Aids and Card Decks, once I can afford a graphic designer;</li><li>A voucher matching the value of your purchase, to spend on the next edition of the game which will be fully laid-out and will integrate art (price to be determined);</li><li>A unique chance to "spark joy" with friends and to put your loot in order once and for all.</li></ul>
<h2>Credits</h2>
<p>Original Design, Layout and Book Design:&nbsp;<a href="https://twitter.com/rolistespod" target="_blank" rel="nofollow noopener">Kalum</a> from <a href="https://rolistespod.com/" target="_blank" rel="nofollow noopener">The Rolistes Podcast</a>.</p>
<p>Rules Editor:&nbsp;<a href="https://chrisssims.itch.io/?ac=6hKcoR9Jch" target="_blank">Chris S. Sims</a>.</p>
<p>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc1NzcyLzU1NjE2NDEuanBn/original/fRzVJ2.jpg]]

<p><span></span></p>
<p><strong><em>Pebble Witch</em></strong> is an rpg-ish, walking simulator-y, talking game.&nbsp;</p>
<p>Play as a witch. Talk to pebbles. Reflect on the melancholy of becoming. Sit more. Walk. More walking. Have a crush on your burly teacher. Enjoy a lovely day in the Australian beach town, Dharawal country - Kiama.</p>
<p><img src="https://img.itch.zone/aW1nLzQ2NjExNDEucG5n/original/nhORdr.png" loading="lazy"><br></p>
<p><strong>Features</strong>• One (1) gay protagonist<strong><br></strong></p>
<p>• Two (2) whole spells<br>• About 30 minutes of playtime<br><span class=""> </span> &nbsp; &nbsp; • 20 mins of this is probably spent walking<br><span class=""> </span> &nbsp; &nbsp; • 2 mins sitting still and waiting<br><span class=""> </span> &nbsp; &nbsp; • 8 mins reading about his teacher’s gardening shorts.<br>• A whole bunch of rocks to sit and listen to.<br>• A really beautiful soundtrack by&nbsp;<a href="https://www.facebook.com/SoftwareOfSeagulls/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Software of Seagulls</a></p>
<p><br></p>
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/3jD_Nw4uSy4" frameborder="0" allowfullscreen=""></iframe><br></p>
<p><em>Patch notes:</em></p>
<p>macOS v1.0.4 - fixed an invisible text issue&nbsp;(thanks Flora!)</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/3jD_Nw4uSy4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjcuanBn/original/D%2FfeTo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjYuanBn/original/1C9BrK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NzE3OTQuanBn/original/ke6ChC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjMuanBn/original/RSb22V.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjQuanBn/original/ltQ3ZC.jpg]]
<p>In PepaFatal! you play as Pepa the toilet paper. Trying to survive the endless panic buying from several hands trying to grab you. Dodge hands, obstacles by rolling and jumping.<br></p>
<p>Refresh your rollings by collecting other toilet paper.</p>
<h3>Controls</h3>
<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td>W /&nbsp;Space / Arrow Up</td><td>Jump</td></tr><tr><td>A / Arrow Left<br></td><td>Switch lane left</td></tr><tr><td>D / Arrow Right</td><td>Switch lane right</td></tr><tr><td>S / Arrow Down / Shift</td><td>Roll</td></tr><tr><td>Escape / Pause / Backspace</td><td>Pause the game</td></tr></tbody></table>
<h3>Credits</h3>
<p>Felix Borns - Rigging, Animation, Sound<br>Johannes Grewer - 3D Modeling, Texturing, Concept<br>Sebastian Krause - Programming, Animation Integration, Concept<br></p>
<p><br></p>
<h3>Changelog</h3>
<p><strong>v0.2.0+5&nbsp; Hotfix</strong></p>
<ul><li>Fixed an edge case during rolling being stuck on some cans</li></ul>
<p><strong>v0.2.0+3 - Stacked Can Destruction</strong></p>
<ul><li>Pepa can now roll through stacked cans<br><em>Running into them, still</em> hurts though.</li><li>Some minor fixes and adjustments to the overall experience</li></ul>
<p></p>
<p><strong>v0.1.0+7 - Post-Jam Voting Hotfixes</strong></p>
<p>* Hands are now higher, so you can roll below<br>* Adds full gamepad support (single handed, D-Pad &amp; Facebuttons respectively)<br>* Hands are now always visible on the side (look carefully)<br>* [Fix] Spamming Roll Action no longer bugs movement and roll count<span></span></p>
<p><strong>v0.1.0 -&nbsp;Initial Release</strong><strong></strong></p>
<p><br></p>
<h3>Games origin</h3>
<p><em>The initial version fo the game was created during the&nbsp;</em><a href="https://itch.io/jam/stay-safe-jam" target="_blank">STAYSAFEJAM</a><em>.</em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODIuanBn/original/PrCaZd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODEuanBn/original/gWcsBf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODAuanBn/original/f%2B36tD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODQuanBn/original/w8MkDg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODMuanBn/original/bNOyDB.jpg]]
<p></p>
<p class="text-center">spring has come to Zed<br>and from across the galaxy, the bold and the desperate<br>seek out this strange and haunted world<br>and the Witch that dwells there<br>in the hope that they may come away with<br>some precious fragment of knowledge or power before Zed’s erratic orbit plunges it back<br>into dead and frozen darkness</p>
<p><br></p>
<p>Petitioners of Zed is a tabletop mini-rpg that includes:</p>
<ul><li>Ten playable alien species, from the amorphous Annealites to the six-winged Nesiri to the resilient Humans, adrift without a homeworld.</li><li>A vast and trackless alien swamp, filled with beasts, spirits, and the broken dreams of those that have gone before.</li><li>An enigmatic Bog Witch, on whom you hang your deepest and more secret hopes.</li><li>A simple dice mechanic for resolving actions and fueling calamity.</li><li>A system for quickly generating haunted bog encounters.</li><li>A variety of Terrible Fates--few survive the terrors of Zed, but death is not the only end.</li><li>A 50-item table of lost artifacts, including unusual weapons, enigmatic tomes, and fermented delicacies.</li></ul>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzEucG5n/original/FNWoyS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzAucG5n/original/ltdYT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzIucG5n/original/%2BBBw8T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzMucG5n/original/rQumHD.png]]
<p><strong>Earth Has Fallen:</strong></p>
<p><em>On the morning of June 14, 1968, a group of hippies fled to the mountains of Colorado to wait for doomsday, as the meteor, Icarus, neared Earth. Prophet Don, the leader of the doomsday cult, reported that after the meteor stuck the planet, California would slide into the ocean, the land would be plagued with horrible earthquakes, and society as we knew it would collapse. Don was correct.&nbsp;</em>
</p>
<p>You are a Survivor, one of a handful of children born from&nbsp;<strong>The Children of the Flowers</strong>, living in the mountainside town of Eldorado Springs, Colorado. Since Icarus's landing, the planet has seen wars, massive earthquakes, and the atmosphere poison itself. Not in Eldorado Springs though, it's safe here,<em>&nbsp;it's always been safe here</em>. Things are said to live out in The Periphery, the space around the town that none of these problems seem to cross over into, but it's fine here.<em>&nbsp;It's always fine here</em>. Rumor is the atmosphere is starting to clear up, but the people who leave into The Periphery don't always come back. What are you going to do about it?</p>
<p><strong>Phanta&nbsp;</strong>is a rules-lite and easy to work with RPG system, designed for fast decisive actions, and lasting relationships, both with the other Survivors you find yourself with, and the other folks in Eldorado Springs. All you need to play is 2-6 players, a copy of the rules, your Survivor's playbook, and a handful of d6s.</p>
<p>The Playbooks and Pop Culture Quick Reference guide are both marked as Demos just so players can more easily download them without needing to purchase the full game, but don't contain significant game text within them.</p>
<p>Phanta now officially supports Role,&nbsp;<a href="https://app.playrole.com/sheet-templates/3f2fbff0-phanta/save" rel="nofollow noopener">and I have a basic character sheet up there if you'd like to use it</a>.</p>
<p>Phanta was made as part of the <a href="https://itch.io/jam/record-collection-2k21" target="_blank">Record Collection 2k21 Jam</a> and is based on the song Phanta by Le Tigre (off their incredible 1999 debut&nbsp;&nbsp;self titled album).</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/C89oHnkS0ts" frameborder="0" allowfullscreen=""></iframe></div>
<p>If you'd like a review copy of this game, shoot me a message on twitter (<a href="https://twitter.com/Keganexe" rel="nofollow noopener">@Keganexe</a>) or email me at Phanta@keganexe.com.</p>
<p>Print copies are here! You can reach me either of the above ways to get one, or purchase through itch (which is a little clunky but we will make it work!)</p>
<p>I made a new game, Star Heist, that uses a heavily modded version of the Phanta rulest to run! If you're interested you can get it <a href="https://keganexe.itch.io/star-heist">here</a>, you can play Phanta inside of an Adam Bell game, <a href="https://adamebell.itch.io/stat-heist">Stat Heist</a> here.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/C89oHnkS0ts" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NjQucG5n/original/Gavs4F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NDgucG5n/original/R6UEQV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NTgucG5n/original/EfEUpO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU1OTkucG5n/original/HwJgVP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU2MDIucG5n/original/6B3Bq7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzUyMjEzOTEuanBn/original/2ZD0GY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzUyMjg2MzcuanBn/original/2naaY6.jpg]]
<p><strong>Near-Future Body&nbsp;Horror&nbsp;Adventure&nbsp;In a Paranoid World, </strong>built on the armature of Jared Sinclair's <em><a href="https://s-jared.itch.io/whats-so-cool-about-outer-space">What's So Cool About Outer Space?</a></em><br></p>
<p>Evade the cops. Trust no one. Find your place in the world as the strange new being you're destined to become.</p><p>Layout provided by <a href="https://www.facebook.com/provencreations" rel="nofollow noopener">Proven Creations</a>.<br></p><p>NPC portraits generated with Artbreeder.<br></p>
<p>Submitted as part of the <a href="https://itch.io/jam/what-is-so-cool-about-jam">#wscajam</a>.<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzQyMDQwMTUucG5n/original/3mh7Z%2F.png]]
<p>Duel your friends at university with cards based on famous philosophers!</p>
<p>You just started your classes at Huginn University to learn Philosophy. But in this school, Philosophers duke it out in a popular card game! Build your deck and rise to the top and become the best philosophy student in the class!</p>
<p>Features:</p>
<ul><li>Three starting decks - Greeks, Psych or Marxism.</li><li>Customizable character avatar.</li><li>Energetic and fast paced duels.</li><li>Customize your deck with booster packs.</li><li>You can modify and program your own cards!</li></ul><p>The game is currently in alpha.&nbsp;When I complete the engine expect to see much more story/educational content!</p><p>Blind players! Replace %appdata%/WhatIsPhilosophyAnyways/config.ini with the file&nbsp;config_lv_default.ini found in the&nbsp;game's base directory. This includes default options for blind accessibility.</p><p><em>Note:&nbsp;To play the Philosophy Game Jam version, select the first version. This page is also used to update the current game.</em></p><p><br></p>
<p>[<a href="https://discord.gg/zDrczdBBTk" rel="nofollow noopener">Discord Server</a>]</p>
<p>[<a href="https://www.patreon.com/PunishedFelix" target="_blank" rel="nofollow noopener">Patreon</a>]</p>
<p>Special Thanks:</p>
<ul><li><a href="https://soundcloud.com/podcast-co-coopercherry" target="_blank" rel="nofollow noopener">Machinic Unconscious Happy Hour Podcast</a></li><li>My friends :3</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Ec7WIxGI4Fs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ3MzAyODEucG5n/original/udJbwb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ3MzAyODAucG5n/original/1B03gh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ2MzY5NjkucG5n/original/TIKsgF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ2MzY5NTUucG5n/original/NIQmir.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzUyMzE2NDEucG5n/original/G1owKA.png]]
<p>Got your number.</p>
<p><br>A dispatch by yours truly.</p>
<p><a href="http://twitter.com/peanutbridal" target="_blank" rel="nofollow noopener"><br></a>(you will know you've finished the game when you return back to the title screen.)<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pTtUhE9STaY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjcucG5n/original/Oxzd%2B9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjgucG5n/original/DrW5IP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjkucG5n/original/CJ6f5C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMzAucG5n/original/z%2BrY3z.png]]

<p>Pictassembler is an engineering puzzle game where you set up a production line of marbles&nbsp;and operator blocks to assemble pixel art images one block at a time. Each marble can be stuck to an anchor or an existing pixel&nbsp;block to create a pixel block in a given location, and can also be shaded appropriately. The finished block shape needs to match the solution image to finish the level. The challenge comes in setting up the placement and timing of the marbles' paths to ensure that they land in the solution grid correctly.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/VMKM2wYg7GI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzAucG5n/original/Xo%2BJPz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzEucG5n/original/jB6LGk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzIucG5n/original/XKCBYA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzMucG5n/original/4gYtzk.png]]
<p>A system agnostic RPG magic item in a business card for your players to fiddle with.</p>
<p>Cut the coin, flip the whole card or use a real cursed coin.&nbsp;</p>
<p><br></p>
<p>Only one coin of this kind was ever minted. The molds were lost and the coin makers disappeared. It looks worthless, and anyone who holds it feels compelled to flip it. At least just once.</p>
<p><br></p>
<p>The PDF includes bleed.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3NzkyLzU1NTg5MjkucG5n/original/EeLC59.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3NzkyLzU1NTg5MzAucG5n/original/MxzmCn.png]]
<p><strong>Pikuniku</strong> is an absurdly wonderful puzzle-exploration game that takes place in a strange but playful world where not everything is as happy as it seems. Help peculiar characters overcome struggles, uncover a deep state conspiracy, and start a fun little revolution in this delightful dystopian adventure!</p>
<ul><li><strong>A Vibrant Adventure for All:</strong>&nbsp;Explore a colorful world at your own pace, help quirky characters with their unusual requests, and solve clever puzzles that will challenge players of all levels with a 4 - 5 hour campaign.</li><li><strong>Charming Cast:</strong> Meet a cast of memorable characters on your journey, each with their own problems and eccentricities to accommodate along the way.</li><li><strong>Cooperative Mode:</strong> Join up with family and friends for local multiplayer fun in custom cooperative levels and challenges.</li></ul>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7KPKVD2kpFY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzIucG5n/original/XimIaO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzMucG5n/original/9YXgW6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzYucG5n/original/lq53AB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzcucG5n/original/z6qkTB.png]]
<p>Atop the poppy hills are ruins to what was once revered and feared. One man wants to paint this scenery, while another wants to research it, while the forgotten god wants to have silence once and for all.<br></p>
<p><em>Pillars on Poppy Hills</em> is a visual novel about wanting to become something or nothing. It also features:</p>
<ul><li>Approximately 13,000 words&nbsp; / 40 minutes of play time!</li><li>3 Endings!</li><li><strong><em>Content Warning:&nbsp;</em>This visual novel and touches upon&nbsp;melancholic and downcast themes.</strong></li><li>Also nobody is straight and everyone is depressed! Yay!</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODcucG5n/original/ErNXha.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODgucG5n/original/rZTQxH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODYucG5n/original/yRtMyG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwNDgucG5n/original/MZYnTY.png]]

<p>Everything you desire is inside Pitman's randomized dungeons: Dwarfs, trolls, golems, treasures, potions, magic, hammer, bow, even more weapons, ... and don't forget the monster moles and pretzels! </p>
<p>Traditional Rogue-like gameplay like randomness, high replayability and turn-based strategic roleplaying elements meet innovative level design decisions.</p>
<p>Pitman will let you die a thousand deaths - thus making your survival especially satisfying! And with the modern game technology of "save games" you will be able to face a challenge again, better prepared.</p>
<p><strong>Features:</strong></p>
<ul><li>RPG - create the hero you want, like a dwarven sorcerer or a powerful warrior</li><li>turn based - for a tactical course of action</li><li>3D board game style - build the world while playing</li><li>random based - no game will be like the one before</li></ul>
<p><em> DISCLAIMER: This game is from 2011 and was our first commercial title. Ah, the good old times.</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/N3iD_F-TgI8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk2LmpwZw==/original/RDXiZI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk3LmpwZw==/original/yJfrzP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk4LmpwZw==/original/nQaCD7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk5LmpwZw==/original/18gTAp.jpg]]
<p>These icons can be used for any engine or any purpose, but they will match the requirements of RPG Maker MV and will fit nicely into any project&nbsp; that can use 32x32px image dimensions.<br></p>
<p>The pack contains 96 different icons including:</p>
<ul><li>Ingredients</li><li>Monster drops</li><li>Tools</li><li>Healing items</li><li>Quest rewards</li></ul>
<p>The icons are 32x32 each and are therefore compatible for RPG Maker MV's default item system. They can even be used in other makers as event icons.</p>
<p>However, they can be used for whatever you see fit - gamedev or otherwise!</p>
<h2>RELATED ASSETS:</h2>
<p><a href="https://itch.io/c/495984/cazs-assets-paid">PAID ICONS AND ASSETS:</a></p>
<p><a href="https://itch.io/c/495984/cazs-assets-paid"><img src="https://img.itch.zone/aW1nLzQ5OTA0MTMucG5n/original/XMLQ7M.png" style="max-width: 100%" loading="lazy"></a>
</p>
<p><a href="https://itch.io/c/495985/cazs-assets-free">FREE ICONS AND ASSETS:</a></p>
<p><a href="https://itch.io/c/495985/cazs-assets-free"><img src="https://img.itch.zone/aW1nLzQ5OTA0MTUucG5n/original/mhj%2B2N.png" style="max-width: 100%" loading="lazy"></a>
</p>
<h2><a href="https://itch.io/s/43462/pixel-fantasy-rpg-icons-ultra-bundle">PIXEL FANTASY RPG ICONS - ULTRA BUNDLE $119.99 (SAVE 21%)</a></h2>
<p><img src="https://img.itch.zone/aW1nLzQ4NDk5NTQucG5n/original/nZB9Wb.png" style="max-width: 100%" loading="lazy"></p><p><br></p>
<p><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzEwNzAwODgucG5n/original/7IMXhm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzE5MDY4MzIucG5n/original/tya45P.png]]
<p>An asset pack containing a full deck of cards within a sprite-sheet and individual sprites. Also features two colour options, back designs and blank cards.&nbsp;All sprites are 60x84 but can be easily resized if required.</p>
<p><strong>Feel free to use these assets in anyway you please, although I'd appreciate paying the suggested price&nbsp;if used commercially.</strong></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzIzMjI4MzIuZ2lm/original/h%2BNA5P.gif" alt="look at these dudes spin" title="look at these dudes spin" loading="lazy"></figure>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjEyNzIucG5n/original/uBRbUH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjI4MjUucG5n/original/pJuzxU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjEyNzMucG5n/original/auUqVz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjI4MTcucG5n/original/t1sNkB.png]]
<p style="text-align: center; font-size: 9pt">
		In case it is unclear from the look of this page,
	<br>
	please do not buy this if you are prone to&nbsp;epilepsy seizures.
</p>
<p style="text-align: justify">
	<strong><br>
	</strong>
</p>
<p style="text-align: justify">
	<strong>Pixel Session Vol.1</strong> is a collection of <strong>5 extra-polished eye-candy arcadey jam-style games</strong>, exploring experimental and minimalist gameplay and graphics!
</p>
<p style="text-align: justify">
	<strong><br>
	</strong>
</p>
<h3 style="text-align: center">
The Games
</h3>
<p style="text-align: center">
	<strong><em>
	GET DEEP INTO DESCENT
	</em></strong>
</p>
<p style="text-align: center">
	<strong><em>
	GET LIGHTNING IN LIGHTNER
	</em></strong>
</p>
<p style="text-align: center">
	<strong><em>
	GET WATCHED BY B1G BR0TH3R
	</em></strong>
</p>
<p style="text-align: center">
	<strong><em>
	GET CLONES IN CHARGING PANIC
	</em></strong>
</p>
<p style="text-align: center">
	<strong><em>
	GET BURSTING WITH CHROMA CANNON</em></strong>
</p>
<p style="text-align: justify">
	Each game is based on 
	<strong>one simple but special gameplay mechanic</strong> and built around this mechanic. With a focus on visual feedback, the five games are fine examples of <strong>colorful video game juiciness</strong>.
</p>
<p style="text-align: justify">
	The results are 
	<strong>five eye-candy arcadey games</strong> that will have you say "<em>ok just one more time</em>" a lot of times.
</p>
<p>
	<br>
</p>
<h3 style="text-align: center">
About the creator of Pixel Session Vol.1</h3>
<p style="text-align: justify">
	<strong>TRASEVOL_DOG</strong> is an indie game developer who enjoys finding and trying new gameplay mechanics. <strong>Eternal prototyper, gamejamer and "Twitter Treasure"</strong>, TRASEVOL_DOG is in love with 2D graphics and provides his audience with much color, going from concept to next concept, like <strong>a gif machine</strong> mostly fueled by passion and sugar.
</p>
<p style="text-align: justify">
	He is also one very active 
	<strong>Pico-8</strong> developer, constantly exploring the visual possibilities of the restrictive fantasy console by <strong>Lexaloffle</strong>. From colorful procgen experiments to trippy programs fitting in a tweet or in a 120 seconds gif to actual games such as <strong>HIGH CLIMB</strong> or the five in <strong>Pixel Session Vol.1</strong>.
</p>
<p style="text-align: justify">
	You can check out 
	<a href="https://twitter.com/TRASEVOL_DOG" target="_blank" rel="nofollow noopener"><strong>his Twitter here</strong></a>. He does a lot of stuff you can enjoy <strong>for free</strong> too!<span></span><br>
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTYzLmdpZg==/original/9kcMUl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTY2LmdpZg==/original/dVrZSl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTczLmdpZg==/original/uMZ6dN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTcxLmdpZg==/original/zUBTTw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTc1LmdpZg==/original/4jz2js.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMyLmdpZg==/original/wK%2FLz%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMxLmdpZg==/original/1K9kWX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMwLmdpZg==/original/Wf7%2Bxe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDI4LmdpZg==/original/7ki2ko.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDI5LmdpZg==/original/exaVNG.gif]]
<p>Top-down retro racing game for PC (Linux, Intel-based Mac, Windows) and Android.<br></p>
<p>Race for the first place on various tracks. Pick up bonuses to boost your position or slow down competitors!<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xriYt8K9lxw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1NzkucG5n/original/9ue9I0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQ4NzMwODkucG5n/original/vU55ag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1NzcucG5n/original/uCBv2W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1ODAucG5n/original/7PpCZm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzUzMTAzMzgucG5n/original/UoxQU6.png]]

<h4>About the game</h4>
<p>Pixross is a picture logic puzzle game featuring <strong>160+</strong> unique puzzles, customization and extra challenges for each puzzle. Unlock new puzzle packs or customization options by completing puzzles!</p>
<ul><li><strong>Hundreds of challenging puzzles&nbsp;</strong>– Each puzzle pack has a specific theme, you can unlock new packs by completing puzzles.</li><li><strong>Add extra challenges</strong>&nbsp;– Add challenges to puzzles like clues that disappear, mirroring or only allowing a single mistake to be made!</li><li><strong>Customize to your liking</strong>&nbsp;– Next to changing the game rules you'll also be able to unlock and customize the visuals like backgrounds, tiles and fonts (50 options).</li></ul>
<h5>Requirements</h5>
<p>The game can only be played using a mouse. Windows and Linux&nbsp;compatible, not compatible with other operating systems.</p>
<p><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNLGames" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ4MjIwNzIucG5n/original/g%2FhxGp.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNL" target="_blank" rel="nofollow noopener">Twitter</a> | <a href="https://www.facebook.com/KenneyNL" target="_blank" rel="nofollow noopener">Facebook</a></p>
<h6 class="text-center">Copyright © Kenney 2021 | All rights reserved<br>Featuring art by Sebastian Unrau, Kristopher Roller, Paweł Czerwiński, Lucas Benjamin, Gradienta, Pixabay and Hert</h6>
<h6 class="text-center"><a href="https://kenney.nl/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM3MDYxNjEucG5n/original/3CIJaX.png" loading="lazy"></a></h6>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hTfPmv89y2k" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDcucG5n/original/cBWhoW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDgucG5n/original/lF5hLX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDkucG5n/original/5F5mwu.png]]
<p>The walls are bare. Give. Them. Colour.</p>
<p>As a floating spray can you've discovered a goldmine: an empty and under construction museum. Go in alone or with friends and give this bare museum a splash a colour and populate the empty canvases with your life bringing art.</p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /</p>
<p><strong></strong><strong>Playground </strong>is my&nbsp;submission for the A Game By Its Cover 2018 game jam. If you find any bugs please let me know and I'll be sure to fix them as fast as I can.&nbsp;Any kind of feedback is welcome also!</p>
<p>This is the&nbsp;Famicase cover I used for inspiration:</p>
<p><img src="https://lh4.googleusercontent.com/ukxSbOIwR8MYqnx2KbdbcVUU7-Vnn6wXOet5pSYO5VYkGupufbu26rxVwS6wHiG8nUKuuAXonoDU1CbY8479Vx76R2EYegCzkhsC7sctEjhpFVaEPy2QEB89tXVcnE9gRvCwNPeK" width="346" height="317" style="" loading="lazy"></p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /<br></p>
<p><strong>CONTROLS</strong></p>
<p><em>Mouse / Keyboard | Gamepad (Xbox One Controller)</em></p>
<p><strong>Movement:</strong> W, A, S, D | Left Thumbstick</p>
<p><strong>Looking:</strong> Mouse | Right Thumbstick</p>
<p><strong>Sprint: </strong>Left Shift (Hold down) | Left Thumbstick Button (Hold down)</p>
<p><strong>Jump:</strong> Spacebar | A</p>
<p><strong>Switch Colour:</strong> 1-0, Mouse Wheel | Left and Right Bumper</p><p><strong>Switch Texture:</strong> Q and E | X and B<br></p>
<p><strong>Menu:</strong> Escape | Start</p>
<p>If you don't own an Xbox controller but another gamepad download&nbsp;<a href="https://github.com/x360ce/x360ce" rel="nofollow noopener">https://github.com/x360ce/x360ce</a></p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /<br></p>
<p><strong>CREATE A MULTIPLAYER GAME (Up to 8 players)</strong><br></p>
<ol><li>Click the <em>Multiplayer&nbsp;</em>button.</li><li>Write into the input field a server name.</li><li>Click the<em> Create Game&nbsp;</em>button.</li><li>&nbsp;Now any of your friends can join by clicking the <em>Multiplayer </em>button and clicking on your server in the list on the right. If it doesn't show up for them, they may need to click the <em>Refresh </em>button below.</li></ol>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjYuZ2lm/original/G%2BTh4Y.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjcuZ2lm/original/SI2KMW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjguZ2lm/original/5PZP%2BD.gif]]
<p>Games&nbsp;are ruthless things, designed to be overcome. They are mountains to be scaled. Opponents to be fought. Foes to be stomped.</p>
<p>But do they have to be?</p>
<p><em>Kirby's Dream Land</em>&nbsp;seems like an easy, unassuming game, but is a title that upended what the medium was about. It was an experience built so that all players would feel welcome in gaming, designed to teach people how to play and how to enjoy their time within the world of games regardless of skill level. It turned up its nose at the perception that games had to be hard to be valuable, instead showing the power to be found in allowing all to feel the joy of playing games.</p>
<p><em>Pleasant Dreams: The Welcoming Play of Kirby's Dream Land</em>&nbsp;offers an unofficial in-depth analysis of the elements of&nbsp;<em>Kirby's Dream Land's&nbsp;</em>design that opened it up to players who might not be traditionally "skilled" at games, as well as the writer's own story of finally feeling like games were something he could enjoy. Peppered with discussions and fond memories from developers and game journalists who grew up with Kirby, it looks to examine the attitudes around difficulty in games, the elements that made&nbsp;<em>Kirby's Dream Land</em>&nbsp;more than just an "easy" game, and how accepting yourself (with help from a cheerful puffball) can help you finally find the ability to grow.</p>

[img width=500 [https://img.itch.zone/aW1nLzI2NzQwOTYucG5n/original/RQUHNw.png]]
<p><em><strong>Pleroma is the very first commercial video game by notable and internationally beloved aesthete known primarily as The Aleks. It has been made possible through the generous support of a lovely batch of Kickstarter backers and, of course,&nbsp;patreon patrons.</strong></em></p>
<p><strong>Features!</strong></p>
<ul><li><em>Engage with a sprawling, gripping, freakadelic narrative written by award winning writer and IRIMA (Internationally Recognized Interactive Media Auteur)&nbsp;Aleks Samoylov.<br><br>
</em></li><li><em>Take in the sights and enjoy a distinctive, impressionistic, low poly presentation by award winning, classically trained painter (and IRIMA) Aleks Samoylov.<br><br>
</em></li><li><em>Enjoy experimental tunes by Internationally Recognized Musician (IRM) Monplaisir.
&nbsp;&nbsp;<br><br></em></li><li><em>Explore an atmospheric, open ended world, full of secrets, mysteries, surprises, and non-player characters eager for a chat, and do so at your own pace.<br><br>
</em></li><li><em>Solve a puzzle and unlock the “true ending,” if you’re so inclined.<br><br>
</em></li><li><em>Wield the mighty Tuner and engage in Tuner based actions!<br><br>
</em></li><li><em>Take a guided tour of a significant archaeological site, check out some abstract art in a hip gallery, mingle with important guests at a party / political summit, go spelunking, get lost in a twisted maze, or try to figure out what is&nbsp;really&nbsp;going on.</em></li></ul>
<p><strong></strong><strong>What's this game about?</strong></p>
<p>Well, it's a freakadelic, surreal "puzzle box" (it has one actual puzzle, which is optional - unless you want the "true ending" that is), a set of dreamy, interconnected environments&nbsp;for the player to explore, experience, and unravel&nbsp;at their leisure. There is no shooting in it, and no jump scares. There are some bits that people may consider mildly spooky (or even spoopy), but I would not classify it as a horror in any conventional sense, unless you consider existential angst to be horrifying, which you should.&nbsp;</p>
<p>If you're still unclear as to what genre this game falls into, it is definitely a first person "walking simulator," optional puzzle elements notwithstanding, you will spend the majority of the game exploring and reading stuff. There is a fair bit here to explore ... and a lot to read.&nbsp;</p>
<p>&nbsp;<br><strong>What's the story, fishbone?</strong><br><br>In Pleroma, you will&nbsp;take on the role of Diane Kestler, a youthful individual who has recently moved to a new part of town and is&nbsp;starting a new job at a niche art gallery / studio collective / research library which is (you guessed it!) hiding a rather surprising and unusual secret. I hesitate to reveal more, as I know that many folks are spoiler averse, and personally I would like players to discover and interpret this game for themselves.</p>
<p><strong>Discount Coupons Available<br></strong></p>
<p>If you currently cannot afford to buy or can't justify buying Pleroma at full price, but would still like to help financially support me as an artist and game maker, feel free to use this coupon code. It's the honor system: no strings attached (just don't resell it, obviously)&nbsp;and no questions asked. Just use the following URL to redeem a copy for 50% off.</p>
<p><a href="https://thealeks.itch.io/asabovesobelow">https://thealeks.itch.io/asabovesobelow</a><br></p>
<p><em>(Note: A limited number of completely free community copies is also available below).</em><br></p>
<p>Current build: 1.2<br></p><p>1.2 Updates:<br>- Fixed major issue with the puzzle not registering correct input (I done goofed).<br>- Some improvements to framerate in the All Hail scene on lower end machines.&nbsp;&nbsp;</p>
<p>Known bugs: <br><br>- It's possible that the Vsync option (available through the pause menu) will do the opposite of what it's supposed to. So, if the checkbox is off,&nbsp;Vsync is on and vice versa.&nbsp;If you're getting screen tearing, play around with the two settings. One of them ought to work! (I'll likely patch this up later, but it shouldn't significantly affect your experience).&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4v-wvo3t08o" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyODkucG5n/original/YYCM%2F8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzIzODAyNzgucG5n/original/0NJ%2BSx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI3NDY0MTYucG5n/original/5vE%2Bqs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyODgucG5n/original/cXQlnY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI3NDY0MTcucG5n/original/vD73ZJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyOTAucG5n/original/OQRJSd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyOTEucG5n/original/ieftOl.png]]
<p class="text-center"><strong><img src="https://img.itch.zone/aW1nLzI0MjEwNjIucG5n/original/fxNE1a.png" loading="lazy"></strong>It's time to take the Plunge! Enter the adventure of Billie, the billionth prisoner of a wacky medieval mega-prison, who longs to find freedom on the other side. Rather than try to climb her way out, Billie realizes the only way to freedom is to escape further into the depths below! Dodge, dash, and defeat a wide variety of guards, creatures, and otherworldly beings bent on preventing passage in this exciting turn-based dungeon plunger!<br><br>In Plunge, players will find a new and unique experience, especially for those familiar with the puzzle and roguelike genres. Each floor is an individual challenge meant to test the very best in a battle of brawn and wits. Don't miss this opportunity to find out why Plunge was nominated for the 2017 PAX Rising showcase, the 2016 and 2017 Portland Retro Gaming Expo showcases, the 2019 PAX 10 Selection and multiple showcases with Indie Mega Booth at PAX West and GDC!<br><br><img src="https://img.itch.zone/aW1nLzI0MjEwNjQucG5n/original/vH8xf7.png" loading="lazy"><br>- Play as Billie or a variety of other cartoony characters with charming criminal charges!<br>- Turn-based roguelike action!<br>- Movement with sliding ice physics against enemies with unique and peculiar patterns!<br>- Over 400 randomly selected levels across three separate challenging sections!<br><br>- Plunge and Plunge again with fast pick-up-and-play experiences!<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjIucG5n/original/kFJZ6P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjMucG5n/original/X7i%2B0x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjQucG5n/original/34KODw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjUucG5n/original/iOLqp%2F.png]]
<p>As king of the dogs your mission is to find all your loyal subjects and guide them to the portal. The second you wake up another dog, he will simultaneously follow your movements. You succeed by finding your way to the portal. You are mastering the mission if you save all your loyal subjects, find the golden bone and get to the portal.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/s9FO5Hmagr4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzMucG5n/original/GIMvIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzUucG5n/original/gET6n1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzYucG5n/original/Ow2gJz.png]]
<p><em>“I heard about it later, and when they called us blasphemers and demon-creators, I always thought of him. Robbie was a non-vocal robot. He couldn’t speak. He was made and sold in 1996. Those were the days before extreme specialization, so he was sold as a nursemaid—”&nbsp;</em><em>- I, Robot</em></p>
<p><strong></strong><strong>Positronic Potentials: The Nanny</strong></p>
<p>A solo journaling game inspired by Robbie from I, Robot by Isaac Asimov (1950)</p>
<p><strong>Content Warning: Body Image and Gender Reflection, Playing as a Non-Vocal Robot, Othering, Rejection, Loss of Agency, Child Endangerment&nbsp;</strong></p>
<p>Created as part of the&nbsp;<a href="https://itch.io/jam/fuckadobe" target="_blank">#FuckAdobeJa</a><a href="https://itch.io/jam/fuckadobe" target="_blank">m</a>&nbsp;using Paint 3D &amp; Affinity.</p>
<p>In Positronic Potentials: The Nanny, you play as a non-vocal robot whose role is that of a nursemaid for a child. You weren’t necessarily designed specifically for this role, though it holds a great importance to you, as does your relationship with the one under your care.   </p>
<p>You have a “positronic brain” and your mind is at least somewhat comparable to that of a human. You are able to consider yourself and the world around you. How closely your thoughts and feelings compare to humans, and how you relate to them, is up to you.   </p>
<p>While not designed to be able to speak, you are able to communicate through gestures and sign language.&nbsp; The child you care for is able to understand you for the most part.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTY4LmpwZw==/original/Mg%2BnzI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTc5LmpwZw==/original/tEmL8%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgyLmpwZw==/original/bibu2n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgzLmpwZw==/original/s8sFQV.jpg]]
<p>Possession is a traditional turn-based roguelike where you play as a ghost trying to make your way to the surface. You are incredibly frail, but have one advantage: you can possess the bodies of the monsters you encounter, and use their strength and abilities as your own. Hop from body to body as you attempt to make it back to the surface.</p>
<p>Features:<br></p>
<p><img src="http://possession2.com/images/eyebeast.png" loading="lazy">Dozens of possessable monsters, from the horrifying to the hilarious, with a wide variety of powers. <br><img src="http://possession2.com/images/sarcophagus.png" loading="lazy">Special themed levels with unique hazards, creatures and layouts. Randomly generated, and each floor has multiple possible levels, so each playthrough is different!<br><img src="http://possession2.com/images/chest.png" loading="lazy">Item-less gameplay. The dead have no need for worldly possessions, they just slow you down. <br><img src="http://possession2.com/images/ghost.png" loading="lazy">Quick to pick up and play. Unlike most roguelikes, Possession doesn't require you to memorize dozens of weird key commands, or puzzle over confusing skill and ability lists before you start playing. <br><img src="http://possession2.com/images/fungalwizard.png" loading="lazy">Entirely playable with just the keyboard, just the mouse, or a combination of the two. <br><img src="http://possession2.com/images/pirate.png" loading="lazy">Mod support! Add your own creatures, powers and special levels, or change the ones already there. <br>@ Choice between ASCII or Graphical mode, for the oldschool roguelike fans.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/PIHmR2q8taY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMS5wbmc=/original/tlbaHA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMC5wbmc=/original/5LL4S0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMy5wbmc=/original/nCEmm9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQyOC5wbmc=/original/EnvGYF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzNC5wbmc=/original/vAdZ1E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQyOS5wbmc=/original/6uDDCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMi5wbmc=/original/zPmH9l.png]]
<p>Potion Prodigy is a 2D point and click game with a spooky twist... make potions and chill in this cozy cavern environment by completing small tasks and find hidden gems!</p>
<p>Potion Prodigy is a game made by me! (Katie Wright) with a little help from the wonderfully talented folk at London South Bank University. This was made with care over the course of a year as part of my bachelors degree and is currently still in Beta, but any feedback or comments would be tremendously appreciated so if you enjoyed this please comment below your thoughts and opinions.&nbsp;</p>
<p>CREDITS~~</p>
<p>Art, Production, UI and 3D ~~&nbsp;</p>
<p>Katie Wright (twitter;&nbsp;<a href="https://twitter.com/RoseColouredArt" rel="nofollow noopener">https://twitter.com/RoseColouredArt</a>&nbsp;)</p>
<p>Main Music ~~&nbsp;</p>
<p>George Ricci (twitter;&nbsp;<a href="https://twitter.com/ActIshikawa" rel="nofollow noopener">https://twitter.com/ActIshikawa</a>)</p>
<p>Programming assistance ~~&nbsp;</p>
<p>Paul Sinnett&nbsp;</p>
<p>Semra Usanmaz (<a href="https://twitter.com/UsanmazSemra" rel="nofollow noopener">https://twitter.com/UsanmazSemra</a>)</p>
<p>Additional support ~~</p>
<p>Ste Curran&nbsp;</p>
<p>Andy Lemon&nbsp;</p>
<p>Lara Lema</p>
<p>Robert Ramsey&nbsp;</p>
<p>Special thanks also to the graduates of London South Bank University games design and development course for all the feedback and support throughout this project, I couldn't have gotten through this without your help.&nbsp;</p>
<p>Additional resources ~~</p>
<p>All game and UI sound fx;&nbsp;</p>
<p><a href="http://freesound.org/" rel="nofollow noopener">http://freesound.org/</a>&nbsp;</p>
<p><a href="https://www.zapsplat.com/" rel="nofollow noopener">https://www.zapsplat.com/</a></p>
<p>Particle effects;</p>
<p><a href="https://assetstore.unity.com/packages/vfx/particles/fantasy-effect-50310" rel="nofollow noopener">https://assetstore.unity.com/packages/vfx/particles/fantasy-effect-50310</a></p>
<p><a href="https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565" rel="nofollow noopener">https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565</a></p>
<p>Font;</p>
<p><a href="https://www.fontspace.com/adigiana-ui-font-f22288" rel="nofollow noopener">https://www.fontspace.com/adigiana-ui-font-f22288</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zV3vOBG3S8s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4Nzk4LnBuZw==/original/cXliHw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODAxLnBuZw==/original/fYcRzx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODA1LnBuZw==/original/FdaJJG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODExLnBuZw==/original/HtqJkU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODE2LnBuZw==/original/aY2%2BTx.png]]
<p>Named for the transition of wakefulness to sleep, <em>Praedormitium</em> is a tabletop roleplaying game inspired by the experience of lucid dreaming. Players portray Hypnopomps, characters with the innate ability to manipulate the Realms of Dream as they travel through it on strange and wonderful adventures.</p>
<p><em>Praedormitium</em> uses a deck of tarot cards as the basis of its resolution system, cooperative play, and the unlimited power of players' imaginations to build a cohesive narrative experience. Anything is possible in dreams, and the game can be as wild or whimsical, as dark or surreal as the players choose to make it.</p>
<p>This Quickstart guide has everything you need to jump right into playing <em>Praedormitium</em>, including the basic rule system, character creation, a sample character sheet, tarot interpretation charts and background information on Hypnopomps and how they fit into the Realms of Dream.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzQxMjIyMzEuanBn/original/dl3WXd.jpg]]
<h1>Predestination is now available on itch.io!</h1>
<p></p>
<p><strong><em>Predestination</em> is a turn-based sci-fi 4X game set in the distant past of our own galaxy. Ships from countless races are flung back in time by a powerful hostile race known as the Revenants, and must now work to rebuild their empires and somehow stop the Revenants in the past. Explore the galaxy, colonise habitable worlds, meet alien races, and wage war.</strong></p>
<p><em>Predestination</em> blends the gameplay of classic titles like <em>Master of Orion II</em> with a narrative storyline and new game mechanics 4X fans have been waiting years to get their hands on: A 3D galaxy map, turn-based tactical fleet combat, advanced planetary exploration and colonisation gameplay, terraforming, a seamless 3D ship designer, and many other features.</p>
<p><br></p>
<h1>Ongoing development plans</h1>
<p><em>Predestination</em> is now feature-complete, with all major features implemented thanks to incredible backer support and feedback, but development doesn't stop here! We'll continue adding free updates and new content throughout 2020 in addition to regular bugfixes and quality of life improvements. We'll release new challenge maps, further episodes singleplayer story campaign, bonus ships and artwork, and of course the custom&nbsp;content designed by our Kickstarter backers.</p>
<p>Brain and Nerd is committed to supporting <em>Predestination</em> for as long as possible and we aim to begin working on DLC and expansions with all new gameplay later this year. We'll also be investigating adding multiplayer and modding tools in free updates after the backer content is complete. We have some very exciting plans for future content, such as space monsters and races with living bioships, and we also constantly turn to our community for ideas. Stay with us and keep an eye on our development updates for more news as we post it.<br><br><br><strong>LEARN MORE: </strong><a href="http://predestinationgame.com" target="_blank" rel="nofollow noopener"><strong></strong></a><strong><a href="http://predestinationgame.com" rel="nofollow noopener">http://predestinationgame.com</a></strong></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/_vnXxo6WbPI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDEuanBn/original/fV%2B7tM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDQuanBn/original/IpNoZa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDIuanBn/original/DOrpRJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDUuanBn/original/8zZw8W.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDcuanBn/original/ZhPWSj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDguanBn/original/VRVIFT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDMuanBn/original/RBnG%2FV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDYuanBn/original/S%2F3Tr4.jpg]]
<h3><em></em> About</h3>
<p>Deeper and deeper into an infinite basement of increasingly difficult enemies, how deep can you go?</p><p>Pressure is a simple, high-score based arcade FPS with easy to learn but rewarding projectile mechanics<br></p>
<p>Search the maze-like floors for the green zone to drop into the next level and receive half your health back</p>
<p>Chaining combos of kills, hitting long range shots or bouncing shots off walls into enemies will also heal you</p>
<p>Enemies will hit harder and increase their spawns as you reach deeper and deeper floors</p>
<p>Watch out for harder enemy types as you go deeper</p>
<h3>Controls </h3>
<p><strong>W</strong>, <strong>A</strong>, <strong>S</strong>, and <strong>D</strong> to move &nbsp;</p>
<p><strong>Left click</strong> to shoot &nbsp;</p>
<p><strong>Space </strong>to jump &nbsp;</p>
<p><strong>Heal</strong> by entering the next stage (green zone), chaining combo kills, hitting a long range shot or bouncing shots off of walls into enemies<br></p>
<p>You can <strong>interupt </strong>an enemy charging up to quickly shoot again by shooting it while it is charging/flashing<br><br></p>
<p><br></p>
<p><br></p>
<p>Originally made during <a href="https://ldjam.com/events/ludum-dare/48/pressure" target="_blank" rel="nofollow noopener">Ludum Dare 48</a> in 48 hours.</p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzU3NzI1NDcuanBn/original/L7opff.jpg]]
<p>Escape the void, trust nothing.</p>
<p>-1 player adventure game with cosmic horror vibes</p>
<p>-Keyboard and mouse recommended, game pad compatible&nbsp;</p>
<p>-More chapters coming soon with harder challenges and spicier spooks.&nbsp;</p>
<p>-Content Warning: claustrophobia&nbsp;</p>
<p>Designed and Developed by Grant Andrew Ervin</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMjYwMTAuanBn/original/8DqnVk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMjYwMDkucG5n/original/eHnHDr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMzI1ODguZ2lm/original/XuHTet.gif]]
<p><em>You and your friends saved the kingdom. Now, peace awaits. Yet the Hero has fixed his gaze on you and declared his love. Unable to deny him, you have become his trophy for his valiant bravery in the war.&nbsp;</em></p>
<p><em>You are his Prize.</em></p>
<p>Prize is a game about a person unrequitedly loved by the Hero. Bound to him, you live your life in his shadow. But what is it like to be the hero's trophy?</p>
<p>This solo journaling game takes you through your life as his Prize. Explore your life, its greatest events, and harrowing moments, with journalling prompts to guide your experience.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzUxNDEyODQucG5n/original/LkrhRh.png]]
<p>You've forgotten to write your assigned essay...again! Quickly type out&nbsp;<em>SOMETHING</em> to hand the teacher before she collects them in 1 minute!<br><br>A simple concept for a typing game that I wanted to get out of my head and into something tangible. Quickly type out words relevant to the subject of your essay to increase your grade!<br><br>Only controls are using the keyboard to type and&nbsp;<em>Escape</em> to quit.<br><br>Credits:</p>
<p><a href="http://twitter.com/wyver9" target="_blank" rel="nofollow noopener">@wyver9</a> for the music!</p><p><br></p><p>NOTE: There's only two categories at the moment but I plan to add more soon!</p>

[img width=500 [https://img.itch.zone/aW1nLzM1Mjg1MDIuZ2lm/original/%2FSD0Ib.gif]]
<h2>A Storytelling Card Game About Refusing Your Destiny.</h2>
<p><strong>By&nbsp;<a href="http://twitter.com/mqsalmon" target="_blank" rel="nofollow noopener">Mitchell Salmon</a>.</strong></p>
<p>
</p>
<p><em></em><em>Nobody knows how the Wizard came to power. For as long as anyone can remember, his dark tower has stood over the empire’s capital, and his armies have brutally enforced his will. His dark creatures lurk in the wilderness, preying on unprepared travellers. His dominion is total.&nbsp;</em></p>
<p><em>Two decades ago, a Hero rose from humble beginnings to challenge the Wizard. The Hero raised an army and took the fight to the capital. They were defeated. The army was scattered. The Hero died at the Wizard’s hands. But it is said that their spirit was reborn that same day; in time they will grow up and face the Wizard once more. They will likely fail. They will certainly die. And they will be reborn again. It is written. So it will be.&nbsp;</em></p>
<p><em>We were born in the same village as the Hero. We were all born on the same day that they died. The village elders believe that one of us is the Hero reborn.&nbsp;</em></p>
<p><em>Our coming-of-age is in one week. At this ceremony, the elders will divine our destinies through ritual and prayer. Some of us will live great lives, traversing the world, seeking fame, doing good. Some of us will endure lives of hardship and toil. Some of us may become a blight on the world. The destinies revealed to us during the ceremony are never wrong. Once they are written, so they will be. And then the elders will know which one of us is the Hero.&nbsp;</em></p>
<p><em>This is the story of the week before our coming-of-age, and the reading of our destinies. But maybe, before destiny is written, it can be changed...</em></p>
<p class="text-center">*</p>
<p><em>Prologue </em>is a storytelling card game for <strong>2-4 players</strong>, utilising a standard <strong>deck of playing cards</strong>. You will tell the story of a small group of young adults, and a tight knit community on the verge of major upheaval, and find out what happens to each in their future.</p>
<table>
<tbody><tr>
<td><h3>Details</h3></td>
<td><h3>Themes</h3></td>
</tr>
<tr>
<td>
<p><img src="http://gamesandgood.co/image/icon/group.svg" style="height: 16px" loading="lazy">&nbsp;2-4 Players</p>
<p><img src="http://gamesandgood.co/image/icon/time.svg" style="height: 16px" loading="lazy">&nbsp;2-3 Hours, 1 Session</p>
<p><img src="http://gamesandgood.co/image/icon/player.svg" style="height: 16px" loading="lazy">&nbsp;Ages 12+</p><p><img src="http://gamesandgood.co/image/icon/gmless.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy">&nbsp;No GM or preparation required<br></p>
</td>
<td>
<p><img src="http://gamesandgood.co/image/icon/sword.svg" style="height: 16px" loading="lazy"> Dark fantasy</p>
<p><img src="http://gamesandgood.co/image/icon/faith.svg" style="height: 16px" loading="lazy"> Faith and religion</p>
<p><img src="http://gamesandgood.co/image/icon/chain.svg" style="height: 16px" loading="lazy"> Break free from destiny</p>
<p><img src="http://gamesandgood.co/image/icon/compete.svg" style="height: 16px" loading="lazy"> Compete with friends<br></p>
<p><img src="http://gamesandgood.co/image/icon/cards.svg" style="height: 16px" loading="lazy"> Draw cards to find out what happens</p>
<p><img src="http://gamesandgood.co/image/icon/book.svg" style="height: 16px" loading="lazy"> Tell a story together</p>
</td>
</tr>
</tbody></table>
<h3>What's Included</h3>
<p>Your download of <em>Prologue&nbsp;</em>includes a .pdf copy of the rules and card tables to give meaning to a deck of playing cards.&nbsp;</p>
<p>You need a&nbsp;<strong>standard deck of playing cards, including Jokers</strong>.</p>
<p><em>Prologue</em> has an <strong>optional </strong>character sheet for helping kick-start play. This character sheet asks some basic questions about your character and their relationships with other characters.</p>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMDguanBn/original/GSAUkh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMDkuanBn/original/WghY06.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTAuanBn/original/dO096c.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTEuanBn/original/7YOY4M.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTIuanBn/original/iE1H5O.jpg]]
<p>In&nbsp;<em>Pull Me From the Earth</em>, you and another person will use a deck of playing cards to tell a love story between a long-resting bog body and the person who unearths it.</p>
<p>(Made for #QueerUndeadJam)</p>

[img width=500 [https://img.itch.zone/aW1nLzQ0NzA4MTgucG5n/original/hJeS4v.png]]

<p class="text-justify">Pupper's Garden is a little game about a little pupper with puppersized dreams. Spending her days watching through the window as people dig holes in their gardens and hide things within, only for happy little greens to soon spout in their place, until one day she decides that she wants to have fun outside too and with the help of a moo, make a garden of her own. ♥</p>
<p><br></p>
<h1 class="text-center">About the Game</h1>
<p class="text-justify">This is a game that I made mainly for myself, to fulfill a niche that I missed from my own childhood, but as I worked on it I started to figure that maybe it may be able to bring smiles to others too. I never intended this to be a binge game, but rather one you pick up, play for a little bit and then set aside for later. A game of positivity, playfulness and discovery, that doesn't punish or scold you, nor try to push you to maximise some arbitrary number. Very simply I wanted to make a game that was just plain - nice - and I hope that I've achieved that.</p>
<p class="text-justify">On the surface it is a simple game, but there's hidden things and complexity to find, which I'm hoping will bring just that bit more spark into playing it. I won't give away all the secrets here, though I will say that it does obey the universal rule of video games, that "if there is a pupper in the game...".</p>
<p class="text-justify">You will help pupper tend her garden and grow herself tasty treats and pretty friends. Some will grow and then go, others will stay and bring their boon more than once, though be careful as once they have been picked that first time, interacting again while not fully grown will remove them to make space for other friends. Make sure to manage your box as there's only limited space, new seeds magically appearing therein each morning or when you harvest something... that is if there is space of course.</p>
<p class="text-justify">Word of advice though, this is not a game for the instant gratification lover or the point - or achievement chaser. This game is just simply - nice.</p>
<p><br></p>
<h1 class="text-center">Control</h1>
<p class="text-justify">I sought to make a control scheme which remained very simplistic, thus there is very few keys to worry about and everything you do is done via these.<strong><br></strong></p>
<p><strong><br></strong><br></p>
<ul><li><strong>Arrow Keys:</strong>&nbsp; Move / Menu navigation</li><li><strong>Space:</strong>&nbsp; Interact / Select</li><li><strong>Escape:</strong>&nbsp; Back / Quit</li><li><strong>+/- :</strong>&nbsp; Adjust music volume, use CTRL to finetune</li></ul>
<p>Music is adjusted by 5% at a time unless CTRL is held, in which case it's only adjusted by 1% instead.</p>
<p class="text-justify">If you seek to adjust the game volume as a whole, please use the system audio sliders instead.</p>
<p><br></p>
<h1 class="text-center">Special Thanks</h1>
<p class="text-justify">Special thanks goes to Maxine Red, both for her help with opinions and testing, as well as for the background music and fanfare jingles which she created.</p>
<p class="text-justify">Also thanks to my patreons for their support and encouragement. ♥</p>
<ul><li>Atillite</li><li>Maxine Red</li><li>RandomHato</li><li>Lady Random</li><li>Ava</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/auJ5hwEDZ64" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzIucG5n/original/Ngf2QO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzMucG5n/original/bN4cjO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzQucG5n/original/yi0P4K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzkucG5n/original/Tz4PM1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExODIucG5n/original/Ly8Jbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExODkucG5n/original/0GtXDc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTAucG5n/original/zyRB1k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTMucG5n/original/xSUsxQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTYucG5n/original/ZssU2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzEyMDEucG5n/original/ZyUkcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzEyMDIucG5n/original/8JLPg4.png]]
<p>
	A challenging slider puzzle. Slide blocks into their proper hole. Only the brightest will succeed.
</p>
<p>
	Currently over twenty levels!</p><p><br></p><p><br><br><br>No further game updates.</p>
<p>
	<br>
</p>
<p>
	<br>
</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzQvOTE4MDUucG5n/original/tLFjzf.png]]
<p><img src="https://img.itch.zone/aW1nLzQ2MTI0NDIucG5n/original/lD6iW%2F.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ2MTI0NDgucG5n/original/N5tPPB.png" loading="lazy"></p>
<h1>PUSH BLOCKS. FORM SQUARES.&nbsp; &nbsp; OR DIE TRYING!</h1>
<p><span class="">Pushamo is an arcade push-em-up that challenges you to organize different shapes into squares to clear blocks and earn points! It's no easy task, though - as you push on, shapes will come faster and more frequently until you find yourself as overwhelmed as you are engrossed.</span></p>
<ul><li>Satisfying core game loop: <em>An creative take on the block-clearing genre that offers endless replayability and high-scoring<br></em></li><li>Many ways to play: <em>Point Rush, 2P Coop, Puzzles, Challenges, and more modes lead to a massive variety of play experiences<br></em></li><li>8 bits of awesome: <em>Authentic retro experience built in PICO-8</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0OTkyNzcuZ2lm/original/F6VaiV.gif" loading="lazy"><br></p>
<h1>CREATE HUGE COMBOS</h1>
<p>By forming large clears you can earn massive amounts of points and unleash a shower of visual effects. This strategic combo system also rewards you for all kinds of special clears, from Risky to Tidy to Back 2 Back, and many more!</p>
<p>Celebrate and share your most awesome combos with the press of a button - F4 - to record the last 8 seconds of gameplay as a lightweight GIF!<br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ0ODY3ODcuZ2lm/original/9lWHQj.gif" alt="CREATE HUGE COMBOS" title="CREATE HUGE COMBOS" loading="lazy"><br></p>
<h1>BREAK THE RULES</h1>
<p>Challenge Mode presents over a dozen diverse <span class="">rule variations on the already addicting core gameplay! These inventive scenarios range from wonderfully wacky to fiendishly difficult<em> </em>to ingeniously imaginative:<em><br></em></span></p>
<ul><li><em><span class="">Swap out the familiar tetrominos with some less orthodox shapes<br></span></em></li><li><em><span class=""><span class="">All the blocks are invisible after stopping<br></span></span></em></li><li><em><span class=""><span class="">You're also playing snake now, at the same time<br></span></span></em></li><li><span class=""><span class=""><em>And many more!<br></em></span></span></li></ul>
<p class="text-center"><span class=""><span class=""><em><img src="https://img.itch.zone/aW1nLzQ0ODY3MjMuZ2lm/original/kcGEdU.gif" alt="BREAK THE RULES IN CHALLENGE MODE" title="BREAK THE RULES IN CHALLENGE MODE" loading="lazy"></em></span><em><span class=""></span></em></span></p>
<h1>SIT BACK AND RELAX</h1>
<p>Pushamo also offers plenty of calmer experiences for when you want to chill and zone out, and want a less stressful time:</p>
<ul><li><em>Play endlessly without blocks ever increasing in speed in Zendless mode.<br></em></li><li><em>Think over each and every move in the tactical Turn-Based mode! Here, blocks will wait patiently for you to decide your next move before they go anywhere.</em></li><li><em>Ponder over the perplexing Puzzle mode, where you're presented with 32 hand-crafted puzzles that ask you to use all blocks in a single clear.</em></li></ul>
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzQ0ODY2ODIuZ2lm/original/dkdqqc.gif" alt="SIT BACK AND RELAX" title="SIT BACK AND RELAX" loading="lazy"></em></p>
<h1>CUSTOMIZE YOUR EXPERIENCE</h1>
<ul><li><em>Choose between two awesome music tracks<br></em></li><li><em>Select your favorite color palette from a choice of 16, including 8 different pride patterns!</em></li><li><em>Turn off (or multiply!) all visual effects including particles, screen shake, and background animation</em></li><li><em>Reclaim your free time with a handy "unlock all" option, to let you try all Pushamo has to offer without worrying about score requirements getting in the way<br></em></li><li><em>Turn on god mode and laugh in the face of death</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0ODY1OTEuZ2lm/original/J2NHFA.gif" alt="CUSTOMIZE YOUR EXPERIENCE" title="CUSTOMIZE YOUR EXPERIENCE" loading="lazy"></p>
<h1>GAMES FOR GOOD</h1>
<p><span class="">100% of the sales will be given to the Autistic Self-Advocacy Network!&nbsp;They&nbsp;are </span>an autistic-led nonprofit that helps supports disability rights and empower autistic people across the world! Additionally, each copy purchased will create a community copy, providing the game to someone who can't afford it!<br></p>
<h1>BEHIND THE GAME</h1>
<ul><li>Created sustainably&nbsp;by&nbsp;Bean&nbsp;Borg (<em>they/them)</em></li><li>Debut title of solo indie studio <a href="https://twitter.com/beanborg" rel="nofollow noopener">Neuro Diversion</a></li><li>Music by <a href="https://elyon.itch.io/">Emma</a><em> </em><em>(she/her) </em>and <a href="https://www.grubermusic.com/" rel="nofollow noopener">Gruber</a><em>&nbsp;(he/him)</em></li><li>Made in PICO-8</li></ul>
<h5>MORE MEDIA</h5>
<ul><li>Try out the demo <a href="https://www.lexaloffle.com/bbs/?tid=40500" rel="nofollow noopener">here</a>!</li><li>5 minutes of gameplay <a href="https://www.youtube.com/watch?v=PdP28g0t1SA" rel="nofollow noopener">video<br></a></li><li><span class=""></span><a href="https://twitter.com/NeuroDiversion/status/1314966793543352322" rel="nofollow noopener">Twitter thread</a> detailing several features and game modes</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTk1NjkucG5n/original/%2BxGqce.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzgucG5n/original/YWBEQ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDIucG5n/original/2YsXtl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDAucG5n/original/yGz3P9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDEucG5n/original/ulRjBB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDUucG5n/original/EH%2Fb7u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDMucG5n/original/ipJ%2FeV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDQucG5n/original/QAwI%2Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzcucG5n/original/Hy%2FBSS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzkucG5n/original/w1DQ4A.png]]


<p>A teeny little game about bouncing off beans!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ldi_Kdlm_NY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MTYzLzQxMDI5NDgucG5n/original/Qdj9RM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MTYzLzQxMDMyODIucG5n/original/PQTzgB.png]]
<p><strong>Game:</strong></p>
<p>Qavo is a 2D puzzle platformer&nbsp;where you navigate a cube through various sliding-block puzzles filled with deadly obstacles. Explore the twenty different stages awaiting you.</p>
<p>If you've had a pleasant experience playing this game, please consider donating a small sum to a charity organization of your choice.</p>
<p><strong>Instructions:</strong></p>
<p>Unzip to a location of choice and run the executable.&nbsp;</p>
<p><strong>Controls:&nbsp;</strong></p>
<p>WASD/Arrow Keys - Movement</p>
<p>Spacebar / ARROW KEY UP&nbsp;- Jump</p>
<p>X - Switching between player mode and block mode</p>
<p>Also supports XBOX-controller layout</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NTkucG5n/original/85HNHU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjAucG5n/original/43Pgls.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjQucG5n/original/eyxukR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjEucG5n/original/f2Cnjg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjIucG5n/original/lOOzDK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjMucG5n/original/%2BHpxBn.png]]
<p><strong>Q L&nbsp;R Z&nbsp;</strong></p>
<p><strong>a</strong>&nbsp;think quick &amp; act fast&nbsp;puzzle&nbsp;game.&nbsp;<br>[get the game free on <a href="https://play.google.com/store/apps/details?id=com.qlrzstudio.qlrz" target="_blank" rel="nofollow noopener">Google play</a> ]</p>
<p>Stay&nbsp;in the zone.&nbsp; Don't get hit.&nbsp; Keep up the pace.<br>Master the&nbsp;Deep™ scoring system.</p>
<p>Can you survive 3 minutes, beat the boss and rank in the World Wide Leaderboard?&nbsp;</p>
<ul>
<li>Amazeballs soundtrack</li>
<li>Online<strong> </strong>Leaderboards</li>
<li>English, Spanish and French language</li>
<li>Like the art? Go <a href="https://instagram.com/lionelprats" target="_blank" rel="nofollow noopener">follow the artist</a> on insta!</li>
</ul>
<pre>tips :
red + yellow =&gt; orange
red + blue =&gt; purple
yellow + blue =&gt; green
red + blue + yellow =&gt; white
can't shoot something? Click or tap on it!
</pre>
<iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/221745790&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"></iframe>
<div><a href="https://soundcloud.com/jmdee" title="Jmdee" target="_blank" style="color: #cccccc" rel="nofollow noopener">Jmdee</a> · <a href="https://soundcloud.com/jmdee/level-1" title="Level 1" target="_blank" style="color: #cccccc" rel="nofollow noopener">Level 1</a></div>

<iframe width="720" height="450" src="https://www.youtube.com/embed/L3n0aa0a2ww" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzA5LmdpZg==/original/jCsjBA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzEwLmdpZg==/original/mQ9j4m.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzExLmdpZg==/original/ZsjCoo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODcxLmpwZw==/original/7UCNZ1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODcyLmpwZw==/original/Qnbky0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODczLmpwZw==/original/uuwcZn.jpg]]
<p><br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/Rainbow_Duckster.jpg?t=1579909811" loading="lazy"><br></figure>
<h2>1985.</h2>
<p>DUCKSTER is the coolest duck in the biz. He has all the eggs a digital water fowl could ever want. He ROLLS in eggs. He might have "A DEPENDENCY ISSUE" with eggs.<br><br>What sucks about this is that the dreaded GEESE GANG is totally hating on him because they are garbage - and I mean, if you really think about it, no one ever goes "aw, look at that cute goose over there". The Geese are aware of that: it makes them unstable.<br><br>Long story short, they want DUCKSTER'S eggs but he's not going to let it happen, because like I said earlier he might have a dependency issue with the eggs.<strong><br></strong></p>
<h2><strong>Collect eggs in a variety of extreme and overwhelming game modes, cool?</strong></h2>
<figure><strong></strong><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/GAME_MODES.jpg?t=1579909811" loading="lazy"><br></figure>
<h2>This game is&nbsp;hard&nbsp;so get used to it you puppies</h2>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/DUCKSTER_HEADER.jpg?t=1579909811" loading="lazy"><br><br>This game is hard, just like DUCKSTER's life.</p><p>---</p><p>"<em>If you are super into the&nbsp;<strong>Jeff Minter</strong>'s works and&nbsp;<strong>Llamasoft's</strong>&nbsp;more obscure stuff, if your computer in the childhood was a Commodore 64 and you are missing these days, if you follow the contemporary score-chaser arcade scene and '<strong>Don't Die Mr. Robot DX</strong>', '<strong>Death Ray Manta SE</strong>', '<strong>Forget-Me-Not&lt;R</strong>' or '<strong>Heiankyo Alien 3671</strong>' are amongst your favorite games, then '<strong>QUACK ATTACK 1985: TURBO DX EDITION</strong>' will completely blow your mind.</em>"&nbsp;&nbsp;-<a href="https://steamcommunity.com/id/epilexia/recommended/500340/" rel="nofollow noopener">Epilexia</a><span></span>&nbsp;<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/jb5Vnv5R-9c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjguanBn/original/QCg%2FeW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjQuanBn/original/7kiU5d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjMuanBn/original/DPFiUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjUuanBn/original/jG8kUm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjcuanBn/original/20MdVE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjYuanBn/original/u7rtD1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjkuanBn/original/%2BHtbqj.jpg]]
<p><em>You are destined lovers across the whole of space and time.</em></p>
<p><em>In each millennia and every passing moment, you find each other again.&nbsp;</em></p>
<p><em><span></span>Sometimes you are just friends, and other times you fall deeply in love.</em></p>
<p><em>&nbsp;Each time you find each other, you are always a little different. It takes time to relearn what you both enjoy and how to take care of each other, but you are determined to make it work.</em></p>
<p><em>&nbsp;Whether or not you stay is another story, but sometimes all we have is the here and now, and we do our best to enjoy it with the people we have.</em></p>
<p><em>&nbsp;It is in this queer space, the in-between space, that we begin.</em></p>
<p><br></p>
<p><span class=""><strong><em>Queering Spacetime</em></strong>&nbsp;is a whimsical &amp; inclusive dating sim card game for 2-4 players, set in liminal spaces (e.g. a gas station at 1am) where players roleplay girls who are&nbsp;destined lovers across spacetime.</span></p>
<p>It was&nbsp;nominated for an IndieCade 2019 award and was featured in the New York Times as part of Game Devs of Color Expo.&nbsp;<br></p>
<p>As of June 2020, I'm releasing the print-and-play version&nbsp;as part of Queer Games Conference .</p>
<p>More updates on Twitter:&nbsp;<a href="https://twitter.com/compose/tweet" rel="nofollow noopener">https://twitter.com/queerspacetime</a></p>
<p>Or signup for email updates/Learn more about the game at this website:&nbsp;<a href="https://jowlin.wixsite.com/queeringspacetime" style="font-size: inherit" rel="nofollow noopener">https://jowlin.wixsite.com/queeringspacetime</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vnTEH6aYCxg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjEuanBn/original/7GDrMw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjMuanBlZw==/original/QSjvOL.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjQuanBlZw==/original/Q6WkVr.jpeg]]
<h2>We've added some special DLC items for Quench, just in time for the Winter Sale!</h2>
<p></p>
<h4>Get the game, OST, and Artbook &amp; Guide for 60% off in our Holiday Bundle!</h4>
<h4><a href="https://itch.io/s/41412/quench-2020-holiday-bundle">https://itch.io/s/41412/quench-2020-holiday-bundle</a></h4>
<p></p>
<p><br></p>
<h4>Already own Quench? Get the OST&nbsp; and Artbook Bundle at a special discount, for itch.io only! Thank you for supporting us and indies everywhere &lt;3</h4>
<h4><a href="https://itch.io/s/41411/quench-ost-artbook-bundle">https://itch.io/s/41411/quench-ost-artbook-bundle</a></h4>
<p></p>
<p>---</p>
<h2>Become Shepherd, an avatar of nature, and guide herds of animals on a perilous journey.</h2>
<p>Each generation, the Elephant Tribe makes a grand pilgrimage. But this time, something is different...&nbsp;<br><br>Help Shaman, the young Elephant leader, convince the other animal tribes to join her. Protect your herds as they are beset by flood, fire, drought, and the dark smokebeasts that have spread across the land. Control the environment to guide herds of animals and restore their home in this colourful narrative puzzle game!<br></p>
<h2>Features</h2>
<ul><li><strong>Change the environment</strong>&nbsp;around the animals with the powers of the Elder Tree: grow grass and trees, start forest fires, shift sand dunes, or create new rivers and lakes.</li></ul>
<p></p>
<ul><li><strong>Overcome treacherous encounters</strong>&nbsp;with creatures and obstacles while carefully guiding your animals to safety.</li></ul>
<p></p>
<ul><li>Fall in love with a&nbsp;<strong>papercraft-inspired landscape set to a joyful original score</strong>&nbsp;by Adam Sakiyama.</li></ul>
<p></p>
<ul><li>Through&nbsp;<strong>gorgeous illustrated cinematics and in-game dialogue</strong>, explore how kindness, compassion, and forgiveness are powers unto themselves in this fable about overcoming differences to restore the world.</li></ul>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/1IoJIgAPbZw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIwMTI4NDMucG5n/original/j%2B9fkJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzQuanBn/original/Hq7ydk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzYuanBn/original/WAJxel.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzUuanBn/original/r%2BXooj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzcuanBn/original/uoDKDo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzguanBn/original/hELsCY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIwMTI4NDkucG5n/original/R11ScH.png]]
<p>A hack of <em><a href="https://chrismcdee.itch.io/electric-bastionland">Electric Bastionland</a></em> and <em>Into the Odd</em> inspired by <em>Roadside Picnic</em> and <em>Annihilation.&nbsp;</em><br></p>
<ul><li><strong>100 character "alterations"</strong> (like being able to hear&nbsp;warnings uttered by animals,&nbsp;finger bones you can shoot as projectiles, and when you get a cut, the skin opens to reveal a functional eyeball)&nbsp;</li><li><strong>40 pre-made artifacts </strong>(like seeds that grow into human hands, foggy lenses that show the past, and tables to randomly make your own artifacts, like&nbsp;<em>a hovering, pearlescent lattice of crystal that absorbs light</em>)</li><li><strong>80&nbsp;super-compact encounters</strong> (like a baseball-sized tick that turns you invisible, a&nbsp;disembodied&nbsp;brain trying to burrow into your skull to eat your brain and take over your body, and an extremely awkward birthday party)</li><li><strong>Tables to </strong><strong>generate alien-warped terrain</strong> in the City, the Wilderness, the Wasteland, and the Tunnels below, plus a few example locations (like a settlement built out of scrap on giant sea-mushrooms where residents are kept in the dark&nbsp;about&nbsp;the outside world)</li><li><strong>78 pages</strong> including covers and&nbsp;22 full-page illustrations</li></ul>
<p></p>
<p class="text-center"><em>The Guard wants to control it.<br></em><em>The Lab wants to understand it.</em>&nbsp;<br><em>The Underground wants to profit off it.</em>&nbsp;<br><em>You need to survive it.</em>&nbsp;<br><em>Welcome to the Quarantine Zone.</em></p>
<p></p>
<p>Currently marked down to $5 during the completion of playtesting and revisions. If you get a chance to play it, please leave a comment or get in touch at <a href="https://pretendo.games" target="_blank" rel="nofollow noopener"></a><a href="https://pretendo.games/about" rel="nofollow noopener">pretendo.games</a>!</p>
<p><em>Recommended for 1 GM and 1 or more additional players.<a href="https://docs.google.com/spreadsheets/d/1jAVV8qq9m8iFv59dBw7ObNgimhG_qnijvnvzKir9Dhw/edit?usp=sharing" rel="nofollow noopener"><br>Character keeper spreadsheet</a>&nbsp;for online play.<br></em><em>Rules inspired by&nbsp;<a href="https://chrismcdee.itch.io/electric-bastionland">Electric Bastionland</a>.&nbsp;<br></em><em>Illustrations by&nbsp;<a href="http://beeple-crap.com/" rel="nofollow noopener">BEEPLE</a>&nbsp;(Mike Winkelmann).</em><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc4MjIuanBn/original/h4Jpdb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc4MjYuanBn/original/Vt1R5U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODAuanBn/original/I11OhJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODEuanBn/original/pEjPJi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODIuanBn/original/HCBHsC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODMuanBn/original/R2L2lo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc0MTQuanBn/original/tQVzeQ.jpg]]
<p>Enemies are at your doorstep, but you’re the one who knocks! Dodge what you cannot see in your radar equipped Fighter Jet. But beware, the enemy advances at every step! Dogfight with enemy Fighters, Hellmakers, Heat Seekers, Carriers, Bombers and more!<br></p>
<p><iframe src="https://player.vimeo.com/video/437337154" width="640" height="360" frameborder="0" allowfullscreen=""></iframe><br>Purchase new ships with the cash you earn from each run.&nbsp;Each ship has unique movement and different firing techniques, so your strategy is going to have to change to reach the top!</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM5MzMyNTkucG5n/original/OofKRg.png" loading="lazy">You're the pilot of Spade V</p>
<p>&nbsp;Defending your homeland from an invasion of stealthy enemies. You engage your subjects at will, and are good at it too. Equipped with a semiautomatic cannon, your enemy is shown no mercy.&nbsp;</p>
<p>Unfortunately, not everything stays the same.</p>
<figure><img src="https://img.itch.zone/aW1nLzM5MzM0NjkucG5n/original/bUNCo0.png" loading="lazy">You're the pilot of Ace One</figure>
<p>&nbsp;Defending your homeland from an invasion of stealthy enemies. Your speed is unprecedented and your renown precedes you. Equipped with a Gatling Gun and Heat Seeking Missiles, enemies cower in your wake.&nbsp;</p>
<p><img src="https://img.itch.zone/aW1nLzM5MzM0NzkucG5n/original/RpWKdS.png" loading="lazy">You are the crew of Tyche XIV</p>
<p>On a descent from a mining mission, your crew is stopped by your enemies advance. Thankfully, because of your unique engines, the enemy has a hard time to catch your ship strafing. Your 3 Stage Mining Laser outputs enough power for the enemy to be taken aback. They havent even seen you overcharge it yet...</p>
<figure><img src="https://img.itch.zone/aW1nLzM5MzM1MTQucG5n/original/CIH%2FH0.png" loading="lazy"> You are THE BOX<br></figure>
<p>&nbsp;THE BOX is said to be nothing more than a mere box. Everything about it should tell you that is a lie.&nbsp;THE BOX is an enigma. THE BOX takes no prisoner. It's actions are unto itself. THE BOX only spawns more boxes, eliminating anything that has the misfortune of collision. Take command of your fellow Cubes, and eliminate all that stand in your way.&nbsp;<br><br><br>RADARjAM is available on July 28th on Steam, Itch and VoxPop.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDYucG5n/original/m1jaWq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDcucG5n/original/Q%2FrElk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDUucG5n/original/VxPYXH.png]]
<p>This here is the messiest possible sorcerer, one who can't control their magic in any way, shape, or form. If you like playing magic classes but feel like you don't get to roll enough dice, or like thinking on your feet rather than planning ahead, this subclass is for you.&nbsp;</p>
<p>Look down at the bottom for community copies (free!)</p>
<p>The provided tables cover all PHB sorcerer spells.</p>
<p>At some point in the future I'll be adding a sheet or applet that automates all the rolling and spell list population, but I'm still figuring out how best to make that work.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDgzLnBuZw==/original/nQ7d9r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDg4LnBuZw==/original/418CoW.png]]

<h4>Hey, folks! Rainworld and all of its expansions are currently in a bundle: <a href="https://itch.io/b/824/save-tks-teeth-bundle">itch.io/b/824/save-tks-teeth-bundle</a> to help out another RPG creator. If you're thinking of buying a copy, please check that out!</h4>
<p><strong><em>A cyberpunk TTRPG dystopian McJob simulator.</em></strong><br></p>
<p>Two centuries into terraforming the New Republic of Libertaria, the planet is nice enough — well,<em> liveable</em> enough — as long as you live within a few dozen klicks of one of the sky-high toadstool-shaped atmospheric processors. And lucky you, you do, in the urban sprawl around the base of the New Shenzen processor. The daily rains are a side effect of terraforming — should calm down in another few hundred years. The main thing is, your ancestors escaped from the Commonweal's long nightmare of peace and prosperity to found a society based on the <em>real</em> principles of <em>real men</em> — the capital-F Freedom to sell yourself into indentured servitude, own a different military assault weapon for every day of the year, and die from a minor infection because actually seeing a doctor is a deluxe premium optional extra for your medical insurance.
</p>
<p>Breathing the air is still free at point of use, but trust me, they're working on it.<br></p>
<p><em>Rainworld is currently in development — the art isn't all there yet, and there's probably a <strong>billion</strong> typos. (Tell me about one, and I'll credit you for proofreading!) <br></em></p>
<hr>
<p><strong>Rules plugins:</strong></p>
<p>A set of pamphlet-sized expansions to the Rainworld rules is underway.</p>
<p>Currently available:</p>
<ul><li><a href="http://llemoi.itch.io/rainworld-cyberdeck">Cyberdeck</a> — cyberpunk hacking rules</li><li><a href="http://llemoi.itch.io/rainworld-underworld">Underworld</a> — details on the subterranean Gyre</li><li><a href="http://llemoi.itch.io/rainworld-manxworld">Manxworld</a> — the Manx, their homeworld of Askon, and the details that Rainworld's systemic racism ignores</li><li> <a href="http://llemoi.itch.io/rainworld-ganzfeld">Ganzfeld</a> — the Ganzfeld, the Flow, and their place in galactic politics</li><li><a href="http://llemoi.itch.io/rainworld-toxcrawl">Toxcrawl</a> — wilderness exploration in the&nbsp;toxic apocalypse beyond the atmospheric processors</li></ul>
<p>Planned:</p>
<ul><li>Control — random tables, suggested RFWs, and local colour to help run Rainworld</li><li>Catwalk — expanded gear and fashion to keep your operative on the cutting edge of style</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzQ4NDIxMTIuZ2lm/original/KdP2rD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNDQucG5n/original/QwubXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNTIucG5n/original/jQ38jZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNDkucG5n/original/lFE6J4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNTEucG5n/original/Ebmsg5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzYwMjYzMDcucG5n/original/ZBWGre.png]]
<$list filter="[is[current]has:field[rating]]">
''Rating'': {{!!rating}}&nbsp;&nbsp;
</$list>

<p><em>"The first to speak, is the first to lie."</em></p>
<p>Mob justice is messy, I am even unsure that it can be called justice. This GMless solo game places you as a peasant who is being wrongfully accused of a crime that they deem worthy of the capital punishment. You have to think fast and try to calm them, otherwise you won't see the next day.</p>
<p><em>"The mob, they cry for blood"</em></p>
<p><strong>Content Warning:</strong> Mob justice, murder, prejudice.</p>
<p>Keep in mind that there is a difference between protests and revolutions to a mob driven justice. People shouldn't confuse the reaction of the oppressed with the violence of the oppressor. Protests and revolutions punch up, mobs tend to punch down or even against their own peers.</p>
<p style="font-size:12px">Covert art:  Mort de la princesse de Lamballe, 3 septembre 1792.<br><br>Background art: Châtelet ; Bicêtre : massacre des prisonniers de la prison du Châtelet et de la maison de Bicêtre le deux et trois septembre et jours suivants, au nombre d'environ huit cents. 1792<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc1ODQxLzQzNDI1OTAucG5n/original/Bhr%2FM4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1ODQxLzQzNDI1OTYucG5n/original/e5wO7W.png]]
<h3>Rebop Blasters is an overpowered platform brawler with destructible terrain and a jazz soundtrack created by the players.</h3>
<h3>this game is a demo, please have fun but it comes with absolutely no guarantee of anything except that it's really fun.</h3>
<p><br></p>
<p>Hopefully the game natively supports xboxone/360, ds3/4, switch pro out of the box. Steam controller support coming.<br></p>
<p><strong><br></strong></p>
<p><strong>GAMEPLAY CONTROLS:</strong></p>
<p><strong>Jump</strong>: jump/toggle flight/stun cancel/dodge roll</p>
<p><strong>Attack</strong>: short range(tap), dash (hold and release with direction)</p>
<p><strong>Special</strong>: fireball(short tap) blast&nbsp;(hold and release with direction)</p>
<p><strong>Block</strong>: grab (short tap) block (hold)</p>
<p><br></p>
<p><strong>DEBUG</strong>:&nbsp;</p>
<p><strong>R</strong>: resets the current level.</p>
<p><strong>Escape/Pause</strong>: open the menu</p>
<p><br></p>
<p>Default keyboard controls are garbage and designed for me to test move interactions one-handed (xbone controller awkwardly in the other), please feel free to remap them and suggest a default mapping.<br></p>
<p><strong>wasd</strong> : movement</p>
<p><strong>jkl</strong>: attack, charge, block</p>
<p><strong>space</strong>: jump</p>
<p>Currently the game is limited to one mode (versus) and is local multiplayer only. I'd be interested to see how it plays through a service like Parsec, but be aware that giving someone access to play a game with you remotely is a security risk. &nbsp;</p>
<p>Please use the forum for bug reports/questions/suggestions. <br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/6P0JLBiVeuk" allowfullscreen="" frameborder="0"></iframe></div>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6P0JLBiVeuk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzA0MTI0LzIwMzAwNDcuZ2lm/original/4g8H5C.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0MTI0LzIwMzAwNTMuZ2lm/original/mopJ%2Fy.gif]]

<h1>What is Reliance?</h1>
<p>Reliance tells a story of interdependence and inner turmoil in a time after a socialist revolution captured the power of the state in an industrial age city.</p>
<p>Players take on the roles of members of the revolutionary vanguard party in the period of rebuilding after the ruling capitalist forces were driven out of the city. From this point, it will take constant work and decades of struggle and action to build the society they fought for.</p>
<p>It's a game of acknowledging and exploring the challenges of building a world out of the bones of an old one, and of acknowledging just how entrenched the structures of the capitalist mode of production are in every level of our society and mindset.</p>
<p>Gameplay has players confronting and analyzing the contradictions of their new world, and then acting on them to fight back against the forces of reaction and counter-revolution from within their own population and from external powers as well. <br></p>
<h1>Two Trifold Pamphlets</h1>
<p>Reliance is formatted as two separate trifold brochures: one for the players and the other for the GM. These two pamphlets together are a complete game which can easily play out as a satisfying campaign. Here's the current draft of what they'll look like, though the text and layout are not at all final yet:<br></p>
<div class="custom_imageblock">
<div class="custom_img1">
	<p><img src="https://img.itch.zone/aW1nLzU0MzY1MDUuanBn/original/SzOyGr.jpg" loading="lazy"></p>
	<figcaption>Two Reliance trifolds. One says "The Game" and the other says "Running the Game"</figcaption>
</div>
<div class="custom_img2"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MDkuanBn/original/9nyppx.jpg" loading="lazy"></p><figcaption>an image of the insides of both trifolds. One has the text obscured digitally</figcaption></div>
<div class="custom_img3"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MDMuanBn/original/4J8Jlb.jpg" loading="lazy"></p><figcaption>an image of the back of the two trifolds. One has a character sheet in the middle and the other has lines and circles in 6 sets.</figcaption></div>
<div class="custom_img4"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MTEuanBn/original/yTpEbN.jpg" loading="lazy"></p><figcaption>an image of the character sheet on the back of a trifold propped up for easy reference during play</figcaption></div>
</div>
<p>Buying the game at the standard level here on itch will grant you access to both in .pdf form, as well as a collated .pdf of each individual pane of both pamphlets which reads nicely on a phone screen. Additionally, you'll get access to any&nbsp;other pamphlets that get funded as a part of the fundraising here. This has the potential to include pre-built settings, example contradictions, design commentary, and more. The physical copies below will have one of each of the two main pamphlets, but you'll get digital versions of everything else that's unlocked as well.<br></p>
<h1>Funding Structure</h1>
<p>I'm currently working on finishing the game text and laying out the pamphlets while balancing a few other game projects and also my day job, and so am opening up pre-orders for the game. This is both to gauge interest in this type of game, and also to be able to pay myself for the work that goes into making it. Due to the very important topic of revolution, in writing the game I'm making sure to try to read a good variety of revolutionary theory to avoid the soft versions of revolution that we so often see in media.</p>
<p>I'm shooting to release the pamphlets whenever they're finished, but your pre-orders will help move the game up in my priority list. As such, I've set some funding goals here:<br></p>
<ul><li><strong>$250 - </strong>I'll create a GM Advice pamphlet that walks through how to identify contradictions in play as well as a slew of starting ones to work from through play.</li><li><strong>$500 </strong>- I'll put together a setting pamphlet for use with the game to skip the steps about building the world at the beginning of play. The setting will be in a very low magical setting that imagines a world similar to the conditions of the Great Depression in the US.</li><li><strong>$1000 </strong>- After work on the previous two goals is finished and all pamphlets are released, I'll start working on a full book-sized game based on everything I learn from playing and writing this version of Reliance. Whenever it's ultimately finished, it will include a full setting to play in, expanded rules, play varients (e.g. GMless), and more. I'd love to make this.</li></ul>
<p></p>
<h1>Free Copies</h1>
<p>Because of the way reward tiers are set up on this itch page, I can't set up community copies in the traditional way. However, if the price is a barrier for entry, clicking the below link should allow you to download the game for free, and don't hesitate to do so!<br></p>
<p><a href="https://adamebell.itch.io/reliance-revolution-and-contradiction/download/tkoN_rqgXCTvMmxRxwzF4VvM48ndI3py2qXwns1A">https://adamebell.itch.io/reliance-revolution-and-contradiction/download/tkoN_rq...</a></p>

[img width=500 [https://img.itch.zone/aW1nLzU0MTk4NTkuanBn/original/hApNwW.jpg]]
<p>Reliquary is a far-future worldbuilding and exploration game,&nbsp;taking place tens of millions of years in the future. Civilization has risen and fallen over and over again—the vestiges of ten major, extra-solar civilizations have been unearthed at least. The scattered remains of humanity live in a megastructure called the Coil left over from a previous iteration of civilization. No one knows how old the Coil is, who built it, or who originally lived there, but it seems ill-designed for humans in many ways: convoluted, unmapped, and difficult to traverse.</p>
<p>Civilization is rising again out of the metal and dust of the Coil, but there’s much we still don’t understand. We can no longer make the tools that the fortunate have found, relying on the wise devices that can be scrounged or building simple ones.</p>
<p>The Coil is made up of seemingly endless strata—overlapping layers of ancient buildings, artifacts, and machines. One strata may house an entire culture, while another is an uncanny beast’s personal hunting grounds.</p>
<p>You live in the city of Vasq—the only major human settlement known to you—and the Prytanium is always in need of maps, data, and relics from past civilizations. Players create Wanderers to try and deliver them, motivated by duty, honor, or profit.</p>
<p><strong>Reliquary Features:</strong><br></p>
<ul><li>A far-future, strange, brutalist world with millions of years of history</li><li>Simple ruleset</li><li>GMless, no-prep play</li><li>1-4 players</li><li>11 pieces of art</li></ul>
<p><strong>With Purchase, You Get:</strong><br></p>
<ul><li> Single page PDF</li><li>Spreads PDF</li><li>Access to all future updates</li><li>A playingcards.IO room file to help facilitate online play</li></ul>
<p></p>
<p><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzUyNzc0NjcuanBn/original/Lec1vt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODYuanBn/original/4pwLQ4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODUuanBn/original/qVJzEH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODQuanBn/original/s0D4dx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODcuanBn/original/8e0VoK.jpg]]

<p>Restricted Airspace is a single player shoot em up in the <a href="https://nas.sr/2019/10/23/yesterdays-pixels-today/" rel="nofollow noopener">style</a> of Star Fox for the SNES. It takes place in a city made from an amalgamation of the <a href="https://en.wikipedia.org/wiki/Grand_Serail" rel="nofollow noopener">old Ottoman buildings</a> I&nbsp;grew up with in Beirut. In the game the&nbsp;city is under devastating attack and all you can do is delay the unavoidable&nbsp;before you&nbsp;inevitably fail to save the place you love.</p>
<p>It was developed as a backer reward for the&nbsp;<a href="https://www.kickstarter.com/projects/markkleeb/wonderville-arcade" rel="nofollow noopener">successful Kickstarter campaign</a>&nbsp;to support the opening of the&nbsp;<a href="https://www.wonderville.nyc/" rel="nofollow noopener">Wonderville arcade in Brooklyn</a>. It was exclusive to backers for a year and the complete game was scheduled for public release in August 2020.</p>
<p>On August 4, 2020 <a href="https://www.nytimes.com/interactive/2020/09/09/world/middleeast/beirut-explosion.html" rel="nofollow noopener">a massive explosion ripped through the port of Beirut</a>, horrifically realizing the fears that inspired this game. Out of respect for the dead and in mourning for the city that raised me <strong>I&nbsp;have removed from the public version of the game the antagonists,&nbsp;the bombs, the explosions,&nbsp;</strong><strong>the smoke, the inevitable loss.</strong> You are free to fly the skies in peace.</p>
<p>All proceeds from this game will go towards the reconstruction of Beirut.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5MzIucG5n/original/BZ8n0i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDYucG5n/original/ud2f3V.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDcucG5n/original/1GprVM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDgucG5n/original/04dp4X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDkucG5n/original/CQzI31.png]]
<ul><li class="text-justify">"The writing and characters are what stands out here. Despite the game's short length, they're well-written and easy to care for, and the game's emotional moments hit excellently." - Jum,&nbsp;Steam</li><li class="text-justify">"Retrace is an ambitious first attempt, and gets a lot right." - <a href="https://uppercutcrit.com/review-retrace/" rel="nofollow noopener">UpperCut Crit</a></li><li class="text-justify">"Retrace is the mashup of Nier Automata, Zero Escape and horror you wanted" - <a href="https://www.playdiaries.com/retrace-nier-automata-zero-escape/" rel="nofollow noopener">PlayDiaries</a></li></ul>
<p><strong><br></strong></p>
<p><strong>A WORLD THAT DESIRES YOUR DEATH</strong><br>You and your friends find yourself in a strange, unforgiving place. Frantically you seek a way out, but death lurks at every corner, and when it finds you — that’s when your resolve is rewarded with the ability to rewind time. What path will lead you out? What decisions will you have to make? And what secrets will you uncover in the dark?<br><br><strong>A RICH TRADITION</strong><br>Explore a beautifully atmospheric 2D world with a mix of pixel art and painted portraits. Within it you’ll find a mixture of traditional logic puzzles and heart-pounding action sequences, as well as secrets and mysteries.<br><br><strong><br>DEATH IS YOUR TEACHER</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/awakening_600.gif?t=1558719597" loading="lazy"><br>This world desires your death, but that does not mean the end. Use what you learn on one path to explore further down another. Find shortcuts, piece together clues and study patterns that will lead you to victory.<br><br><strong>USE YOUR HEAD OR LOSE IT</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/newspaper_clipping_600.gif?t=1558719597" loading="lazy"><br>Freya is faced with locked door after locked door in her quest to escape, and the only way to unlock them is to play her captor's game--solving the logic puzzles contained within each room. The consequences for getting them wrong can be ... unpleasant.<br><br><strong>QUEER ROMANCE IN DANGEROUS PLACES</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/wlw_mlm_solidarity_600.gif?t=1558719597" loading="lazy"><br>Complicating matters is Freya's long-standing crush on her best friend, Mia. Will the terror of their experience bring them closer together, or tear them apart? And what of Claire, the prisoner who admires Freya as her saviour? Freya's choices will influence more than just her survival, but also her relationships.<br><br><strong>ABOUT THE TEAM</strong><br>Retrace is being developed by Spider Lily Studios lead developer Els White, with programming assistance by Julian Adams, art by Domi Cesarz and music by harmonicblend.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pQOb7RzQOfI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTMuZ2lm/original/MQ1h8O.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTYucG5n/original/pHQ2np.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTgucG5n/original/5%2BGRZT.png]]
<p>What would happen if an insane wizard set up shop on a cursed island and decided to blend the dark arts of <strong>necromancy</strong> and ... <strong>nostalgia</strong>?</p>
<p>They'd become a Retromancer. And you'd have to hunt them down; probably in some kind of intense, pixelated, twin stick shooter.</p>
<h2>Choose Your Champion</h2>
<p>Select one of four different characters to match your play style (or master all of them, to prove your skills):</p>
<p><strong>The barbarian</strong> is slow but sturdy, hurling massive axes towards their enemies and charging forward recklessly. There's also a lot of yelling. Deadly yelling.</p>
<p><strong>The mage</strong> keeps their distance and blasts foes with arcane bolts that steer themselves to the nearest target. Hang back and shred the air with razor sharp magical shards.</p>
<p><strong>The hunter</strong> darts in and out of combat, sniping at monsters with fast-firing and long-ranged arrows then darting out of the way.</p>
<p><strong>The cleric's</strong> greatest strength is their faith, which happens to let them fill the air with spheres of holy light that explode and tear apart the creatures around them. When their devotion is especially strong, they might even be blessed with free armor.</p>
<p>No matter which you choose, you'll level up as you fight through the Retromancer's forces, gaining damage bonuses and recovering armor as you go.</p>
<h2>Arm Yourself Against the Madness</h2>
<p>Take advantage of weapons and power ups to deal more damage, fire faster, dodge enemies, and freeze monsters in their tracks.</p>
<p>Unlock permanent upgrades between games that enhance each character's strengths: mages get even more rapid fire, clerics get more blessings from their gods, hunters become even more deadly at range, and barbarians yell louder than ever before!</p>
<h2>Defy Death</h2>
<p>A unique death's door mechanic gives you a fighting chance to come back from the brink of death.</p><h2>Enlist Your Friends</h2>
<p>If the Retromancer is too much to tackle alone, you can recruit up to three friends in the local 4-player co-op mode.</p>
<p>When you do have your friends with you, you'll be able to revive each other when you fall in battle, so you'll never be stuck fighting alone.</p>
<h2>Survive The Journey</h2>
<p>Battle through 30 stages spread across 6 areas on the cursed island of Qor, challenging a vast array of crazed monsters ranging from rats and beetles to sentient trees and extra-dimensional horrors.</p>
<p>Endure a plague of locusts in the haunted woods, overthrow a cultist army in the ruins, surrender your sanity to the creatures of the Void, and kill the Retromancer.</p>
<h2>Feature Summary</h2>
<ul>
<li>4 characters to master</li>
<li>Unique death's door and multi-player revival mechanics</li>
<li>Up to 4 player local co-op</li>
<li>Both controller and keyboard &amp; mouse support</li>
<li>Over a dozen weapons and upgrades to unlock</li>
<li>30 levels spread across 6 areas ranging from haunted woods to a cosmic void</li>
<li>3 dozen monster types to conquer</li>
<li>In-game bestiary with monster stats and details</li>
<li>Feats and achievements to earn</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/tUAV7BNNdxU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDIuZ2lm/original/bINjmW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDMucG5n/original/Nayn5W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDQucG5n/original/aFm5Pj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDYucG5n/original/qQZFH9.png]]
<p>This is a text based adventure game. In Rettend - File #1 you will solve puzzles and collect photographs.</p>
<p>This experience is in relation to my upcoming first person&nbsp;puzzle game, Rettend.</p>
<p>If you have any questions or feedback feel free to contact me.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzMwNzg3NzYucG5n/original/xSjUW0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzMwNzg3NzgucG5n/original/K0w%2FlZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzMwNzg3NzcucG5n/original/xwM9zZ.png]]
<p><strong>Revels in the Heavenly Hall</strong> is a game of violence without dice, powered by autonomy and collaboration in a one-shot framework that lets you sketch out a battlemap, arrange fighters on it one by one and then smash them into one another with reckless abandon. Its aim is to simulate tactics not only good tactics, but awful ones too; ones that you would be ashamed to have thought of in a setting where the stakes are high and the story hinged on you being good at much of anything. This is a different kind of story.<br></p>
<p>Abandoning the pretext of  challenge, this game is a communal celebration of wreckage. Your room to maneuver here is broader as you are able to narrate the fates of your pieces freely, both in how successful their actions are as well as the harm they may sustain, with a robust system of shared authority and ground rules guiding you into using great victories as well as terrible defeats as moment-to-moment storytelling tools. Lock hands with your friends and throw yourself into destruction, and make sure to enjoy yourself to the fullest.</p>
<p>This game was made for the 4F Tactical Combat Jam. Here's to a life of being awful at tactics and loving every moment of it.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzQ3MTQ5NjgucG5n/original/JrbVd%2F.png]]
<p>You're applying for <em>the job of your dreams,</em> a chance to work at the prestigious Reverie corporation and contribute to the growth of their dream network. They specialize in reading and interpreting dreams with voice synthesis software and it will be your job to verify and degauss the dreams as part of your application. Good Luck!</p>
<p style="margin-left: 20px"><em>I researched dreams to actually provide accounts of real individual's thoughts and nightmares during sleep. I was fascinated in recent applications of data visualization and wanted to make a game that utilized some of those techniques as you build out a network for Reverie.</em></p>
<p>I designed the game for the <a href="http://contest.gamedevfort.com/submission/474" rel="nofollow noopener">GameDevFort contest 2015</a>. You can follow me here: <a title="Here" href="https://twitter.com/metkis" rel="nofollow noopener">https://twitter.com/metkis</a></p>
<p>The music is a modified version of <em>Water Lily</em> by Kevin MacLeod. It has been time-stretched and inversed, with reverb and flanger added.</p>
<hr>
<p><strong>Game Info</strong>:</p>
<ul><li><em>The game supports both Mouse &amp; Keyboard as well as the XBOX 360 Controller.</em></li><li><em>Headphones are recommended.</em></li><li><em>I suggest having a decent computer as the effects used are expensive. Still, it should easily run on most entry-level gaming rigs.</em></li><li><em>The game features just under 8 minutes of VO.</em></li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgxLnBuZw==/original/2bkZFQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgyLnBuZw==/original/hVHU%2B7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgzLnBuZw==/original/pygp7k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTkwLmdpZg==/original/T2Qo7o.gif]]
<h3>English</h3>
<p><em>Rewwixta </em>is a solo story generation TTRPG where you recount tales of revolt, rebellion, and uprising against colonial powers. It is based on brilli, a Maltese folk game. <br></p>
<p>While <em>Rewwixta </em>is inspired by various historical rebellions carried out by the Maltese population, the game is explicitly anti-canon, and we encourage you to tell your own stories of colonial revolt.</p>
<p>12 page document, with 1.5 pages of image and academic references<br></p>
<h3>Malti</h3>
<p><em>Rewwixta</em> hija lgħajba fejn jintqalu stejjer ta' assedji, ribelljonijiet, u rewwixti kontra setgħat kolonjali. M'hemmx bżonn parteċipanti oħra biex tilgħab <em>Rewwixta</em>; tista' tintlagħab minn persuna waħda. Il-lgħajba hija bbażata fuq il-logħba tal-<em>brilli</em>, logħba li hija parti mill-folklor Malti.</p>
<p>Għalkemm <em>Rewwixta</em> hija ispirata minn bosta rewwixti li saru Malta, il-lgħajba hija espliċitament kontra l-idea li għandek timxi mal-istess ideat. Anzi, nħeġġuk tirrakkonta stejjer ta' rewwixta li verament jistgħu jissejħu tiegħek.</p>
<p>Dokument ta' 12-il paġna, b'paġna u nofs ta' referenzi akkademiċi u referenzi għall-istampi li ntużaw<br></p>

[img width=500 [https://img.itch.zone/aW1nLzQwMzg2OTMuanBn/original/iZE%2FKN.jpg]]

<p><em><img src="https://img.itch.zone/aW1nLzEzODAwMzEucG5n/original/LthG4L.png" loading="lazy"><br></em></p>
<h3>An Anti-Coin Collection Platformer inspired by Japanese folktales.</h3>
<h4><img src="https://img.itch.zone/aW1nLzc2NDI5Mi5wbmc=/original/IgFTxI.png" style="color: inherit; font-size: 14px" loading="lazy"></h4>
<p>As the day shines the last of its golden light over the land an eerie realm begins to form in the shadows. This spectral world is home to the Yokai. An assortment of ghosts, ghouls and demons that rise in the dusk and play through the night.</p>
<p>When a young girl, Tamako, spots one of these yokai she finds herself trapped in their world. If she can navigate this perilous land, the key to returning home may lie on the strange new mountain on the horizon.</p>
<p><img src="https://img.itch.zone/aW1nLzEzODA2OTkucG5n/original/VjYsEg.png" loading="lazy"><br></p>
<h4>Features</h4>
<ul><li>Explore the world of Rising Dusk over&nbsp;<strong>20+ levels&nbsp;</strong>traveling through Rice Fields, Castle Towns, Hot Springs, and more.</li><li><strong>Avoid the coins</strong>! A unique mechanic that will have you battling every instinct to get everything. There’s a multitude of collectables, but can you resist collecting them all?</li><li><strong>16-bit meets Studio Ghibli</strong>&nbsp;art style.&nbsp;Encounter all sorts of ghosts and demons drawn from Japanese mythology.</li><li><strong>Hidden Items</strong>,&nbsp;<strong>Secret Exits&nbsp;</strong>and more. This game is bursting with&nbsp;<strong>secrets and easter eggs</strong>.</li><li>For&nbsp;<strong>PC &amp; MAC</strong>&nbsp;</li></ul>
<h4>Press</h4>
<p class="text-center"><em>"A charming, vibrant adventure, jam-packed with cool characters!"</em><br><strong><em>~ Team Cherry</em></strong><span></span></p>
<p class="text-center"><em>"The game never handholds, and everything that is needed to be known is clearly conveyed through the excellent level design."<br><strong>~ Indie Ranger</strong></em></p>
<p class="text-center"><em>"...a pretty mix of 16-bit era and Studio Ghibli."<br></em><strong><em>~ Retronator</em></strong><span></span></p>
<p class="text-center"><em>&nbsp;"...the soundtrack is an absolute banger"</em><br><strong><em>~ cliqist.com</em></strong><span></span></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/GSpmMgUnhhM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTcucG5n/original/GR0%2Bvw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTgucG5n/original/rnnp3y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTQucG5n/original/7WSs0z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTUucG5n/original/pzg9lH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTkucG5n/original/Gq8KYm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTYucG5n/original/ukFtUs.png]]
<p class="text-justify text-right">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;☾<br></p>
<p>Ritual of the Moon is a 28 day long multi-narrative game exploring loneliness, power, and healing. Once discovering her powers, The Earth’s Council exiles the witch to the moon to live out the rest of her life looking at the earth - and the woman she loves - that she can never go back to. The player spends 5 minutes each day over the 28 days reflecting on her experiences on Earth, meditating at her altar, and making a life or death choice.</p>
<p class="text-justify">The game is a daily meditational activity composed of a memory game, drawing symbols, receiving a mantra, and making a decision about the future of the earth. The game tracks the decisions the player makes, becoming a sort of mood tracker. Depending on their feelings over the lunar cycle, the player will experience one of the six unique endings.</p>
<p class="text-justify text-center">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;☾<br></p>
<p class="text-justify text-center">Ritual of the Moon was written and designed by Kara Stone, programmed by Chris Kerich, Matthew R.F. Balousek, Kevin Stone and Hope Erin Phillips, with art and sound by Rekha Ramachandran and Julia Gingrich, with music composition by Halina Heron and Maggie McLean.<br></p>
<p class="text-justify">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;☾</p>
<p><a href="https://ritualofthemoon.bandcamp.com/" rel="nofollow noopener">Purchase the full original soundtrack by Halina Heron and Maggie McLean</a></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;☾<span></span></p>
<p><br></p>
<p>Reviews:</p>
<p class="text-justify">“Playing the game feels like engaging a celestial, soulful advent calendar, a reflection of mood and mindfulness.” - <a href="https://www.polygon.com/2018/5/9/17329332/ritual-of-the-moon-mental-health-games-art-student-ucsc" rel="nofollow noopener">Polygon</a><br></p>
<p>"...I wonder if, at the end of the month, I will miss taking The Ritual Of The Moon and have to start it all over again." - <a href="https://www.rockpapershotgun.com/2019/04/16/ritual-of-the-moon-diary-day-two-but-really-day-three/" rel="nofollow noopener">Rock Paper Shotgun</a></p>
<p>"It’s an incredible experience – one well worth taking a few minutes each day." - <a href="https://indiegamesplus.com/2019/04/ritual-of-the-moon-is-a-28-day-meditation-on-loneliness-healing" rel="nofollow noopener">Indie Games Plus</a></p>
<p>"<em class="">RotM&nbsp;</em>is certainly a meditative experience as well, but it’s more than that. It’s as much a journey as it is a game, and I almost feel like it’s reductive to categorize it.&nbsp;This whole game is a ritual...&nbsp;<em class="">RotM&nbsp;</em>easily slipped into my personal daily ritual for the past fourteen days, and I’m looking forward to continuing that ritual for the next fourteen (and most likely beyond). I’ll miss this experience too much when it’s over to not replay it." - <a href="https://medium.com/@phoenix.simms/ritual-of-the-moon-a-waning-crescent-check-in-3e69f650da6d" rel="nofollow noopener">Phoenix Simms</a></p>
<p>"&nbsp;It is all quite simple, but with how it fits into my own life, it’s comfortable. The witch’s routines are mine, we do the little things we want to do before we rest...&nbsp;&nbsp;<em>Ritual of the Moon</em>&nbsp;demands the daily ritual, demanding that you take a stance yourself, lest it makes the decisions for you." - <a href="http://phenixxgaming.com/2019/04/29/ritual-of-the-moon-and-its-28-daily-rituals/" rel="nofollow noopener">PhenixxGaming</a></p>
<p>"The structure of this game, giving you very deliberate choices with indeterminate consequences that stretch out over time, is an interesting use of the niche contemporary videogames now have in many people’s lives." -&nbsp;<a href="https://emreed.net/dailies.html" rel="nofollow noopener">Emily M. Reed</a><span></span><br></p>
<p><br></p>
<p>More writing on Ritual of the Moon:&nbsp;<br></p>
<p><a href="https://www.pcgamer.com/ritual-of-the-moon-is-a-meditative-game-that-takes-28-days-to-complete-out-now/" rel="nofollow noopener">PC Gamer</a></p>
<p><a href="https://games.mxdwn.com/news/ritual-of-the-moon-is-a-meditative-game-that-takes-a-full-lunar-cycle-to-complete/" rel="nofollow noopener">MXDWN</a></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/580-Ypm3r14" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMTE4LzE3NTk5NTEucG5n/original/0w33uy.png]]
<p><strong>Nostalgic lo-fi driving adventure where you travel through the mountains to discover the story of your forgotten grandmother
</strong><strong></strong><strong></strong></p>
<p>Set in the southern cascades of northern California, Road Trip is a short game about exploration, community, landscapes, and family. Play as <em>the Otter</em> who is out looking for their grandmother, a legend of the Cascades who has made a name in the region but is a mystery to the main character.</p>
<p>The game combines relaxing driving gameplay with narrative based adventure games. Cute, low key and full of vibes.</p>
<p>The game is available for free, you can get the original game soundtrack composed by Stephen Fagan as a bonus with your download if you donate $1.99 or more.<strong></strong><br></p>
<p><strong>Album Cover and Back</strong><br></p>
<p><img src="https://img.itch.zone/aW1nLzU3NTI1MzYucG5n/original/4vBs8D.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzU3NTI1MzgucG5n/original/ojtc78.png" loading="lazy"></p>
<p><br></p>
<p><strong>Credits</strong><br></p>
<ul><li>Elijah Cobb
<ul><li>Artist, Designer
</li></ul></li><li>Liam Cristello<ul><li>Programmer
</li></ul></li><li>Michael Reveliotis<ul><li>Programmer, Narrative Designer
</li></ul></li><li>Will Bridges<ul><li>Programmer
</li></ul></li><li>Stephen Fagan
<ul><li>Composer
</li></ul></li></ul>
<p><br></p><p>If you enjoyed the game give a review, and if you didn't give us a comment so we can improve the game!<br><strong></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/W_jdnBQIKus" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTE5LnBuZw==/original/rjqWfY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwODM0LnBuZw==/original/yHT4w0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTIwLnBuZw==/original/%2FarkIw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwODMxLnBuZw==/original/3yBGcA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTI1LnBuZw==/original/BU8x4w.png]]
<p><strong>Gameplay</strong></p>
<p>Your robot friend is stuck. Help him reach the portal whilst avoiding spikes and other robots out to kill you. There are 10 levels to try can you help him escape them all?</p>
<p>There are many innovative mechanics such as wall jumping and a variety of different enemies.&nbsp;</p>
<p><strong>Controls</strong></p>
<p>Use A and D to move or arrow keys and space bar to jump.</p>
<p>This game was created in 4 days feedback would be appreciated and your ideas could be seen in future updates.</p><p><iframe frameborder="0" src="https://itch.io/embed/1062179?bg_color=56596e" width="552" height="167">&lt;a href=&quot;<a href="https://ellisjames20061.itch.io/tri-again">Tri&quot; class=&quot;redactor-linkify-object&quot;&gt;https://ellisjames20061.itch.io/tri-again&quot;&gt;Tri</a> again by Ellisjames20061&lt;/a&gt;</iframe><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTgucG5n/original/s%2FtdxS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTEucG5n/original/qzWbiV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTcucG5n/original/QTKc74.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMjkucG5n/original/qVFivp.png]]
<p>Robot wants stuff, so go get it for him! This game is a compilation of the original Robot Wants games from 2010:&nbsp;<strong>Robot Wants Kitty, Robot Wants Puppy, Robot Wants Fishy</strong>, and&nbsp;<strong>Robot Wants Ice Cream</strong>. In addition, it includes&nbsp;<strong>Robot Wants Y!?</strong>, a mini-game that was actually the main banner on the JayIsGames website for a while. And of course, Robot wouldn't be wanting it all if we didn't add&nbsp;<strong>Robot Wants Justice</strong>, a&nbsp;<em>brand new</em>&nbsp;Robot adventure!</p>
<p><strong>Robot Wants</strong>&nbsp;pioneered the "mini-metroidvania" concept - an adventure you play through over an hour or less, collecting the powerups you need to go from zero to Kitty along the way. And all with a clock ticking - speedruns are the goal!</p>
<p>Each of the included games includes 2 alternate maps (an "Easy" map, which sometimes is not so easy, but we guarantee it is short! And a "Remix" map, which is never easy, or quick), and there are also 12 Mutators which allow you to transform the way the game plays in a variety of helpful and horrible ways.<br></p>
<ul><li>The ultimate Metroidvania action - you can't even&nbsp;<em>JUMP</em>&nbsp;without first finding a power-up in some of these games.</li><li>A massive shop full of features and game modes to unlock as you play (with space money, not real money. No IAP or DLC here)</li><li>Extreme alien blasting in&nbsp;<strong>Robot Wants Kitty</strong></li><li>Intense kitty-hurling action in&nbsp;<strong>Robot Wants Puppy</strong></li><li>Psychotic mad bombing in&nbsp;<strong>Robot Wants Fishy</strong></li><li>A unique combination of Metroidvania and RPG in&nbsp;<strong>Robot Wants Ice Cream</strong></li><li>Serious puzzle-solving action in&nbsp;<strong>Robot Wants Y?!</strong></li><li>Alien-smashing, air-dashing combos in&nbsp;<strong>Robot Wants Justice</strong></li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/JPtukSt8mEM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTcucG5n/original/HLxSO8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTgucG5n/original/s7G1wi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTkucG5n/original/iyG9vw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDEucG5n/original/o9I%2FyF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDMucG5n/original/QjnzQN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDAucG5n/original/QbpBVS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDIucG5n/original/vZqTf4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDQucG5n/original/rgEFbs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDkucG5n/original/%2FrTTDN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTcucG5n/original/f%2Fr3yY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTUucG5n/original/zAO9ts.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDUucG5n/original/xAViJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDcucG5n/original/P3%2B943.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTMucG5n/original/oJOaHt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDYucG5n/original/OvM6Rv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDgucG5n/original/PYuIst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTgucG5n/original/ZAdDW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTQucG5n/original/IOdllY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTAucG5n/original/9v3JPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTIucG5n/original/efThPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTEucG5n/original/tgpobL.png]]
<p>Robots &amp; Ruins is a pamphlet tabletop roleplaying game about amnesiac androids who have just come online and awakened to find themselves in a post-apocalyptic world they don't know or understand. They struggle to recover their memories of their time in the old world while they explore to find their place in the new world. As they uncover their memories, they also uncover hidden abilities in the form of Software and built-in Hardware. With these tools from their previous existence, they might be able to build a place for themselves in the&nbsp;new&nbsp;world—or defend themselves from its dangers!</p>
<p>Robots &amp; Ruins is based on&nbsp;<a href="https://torthevic.itch.io/vampires-claymores" target="_blank">Vampires &amp; Claymores</a> by Torthevic and uses the same simple but powerful Action and Challenge dice pool system with a handful of d6s. It&nbsp;was submitted as part of&nbsp;<a href="https://itch.io/jam/rpg-latam-jam" target="_blank">RPG LATAM JAM</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTkzMDExLzU2NDk2NzEuanBn/original/uilZJI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzMDExLzU2NDk2NzguanBn/original/vkzpR2.jpg]]
<h3>Throw Garbage At Dinosaurs! RoboVDino is 1-5 player cooperative carnage!</h3>
<p><img src="https://img.itch.zone/aW1nLzEyOTk1NTAucG5n/original/OF7tLT.png" loading="lazy"></p>
<p>Take control of FILO, the unreasonably angry robot, pick up trash, throw it at Dinos, and throw the Dinos into the goal before they wake up. <br></p>
<p><img src="https://img.itch.zone/aW1nLzEyOTk1NDkucG5n/original/e6uxdC.png" loading="lazy"><br></p>
<p>Dinosaur habitats like the Dino-Shore, RAWRcade, and Stock Rex-change will test your skills in single player, or plug in up to 4 more controllers for 5 player coop action!<br></p>
<p><img src="https://img.itch.zone/aW1nLzExMjU5MDAuZ2lm/original/ZGg0lc.gif" loading="lazy"></p>
<p>RoboVDino is an all ages party game with intense arcade action.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-KWrG1hda_Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTEucG5n/original/rEUlOe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTQucG5n/original/eSWkDP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTUucG5n/original/lMBBle.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTIucG5n/original/bdaKd%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTMucG5n/original/KaiXEy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTAucG5n/original/Km1iVR.png]]
<p>A village stricken by tragedy. A group of plucky young fishers. An ancient region, reclaimed by nature, and the wish-granting fish that waits at the heart of it.</p>
<p>Welcome to Rod, Reel, &amp; Fist.</p>
<ul><li><strong>A Tabletop Fishing RPG?!</strong>&nbsp;Rod, Reel, &amp; Fist is 280+ pages of tabletop fishing adventure. Players take on the roles of heroic fishers trying to save their village by making a truly legendary catch.</li><li><strong>Everyone Can Play:</strong>&nbsp;Rod, Reel, &amp; Fist is suitable for all ages, and its dice system makes all failures into temporary setbacks. At the same time, it's built to scale up and provide a challenge for seasoned players, and it comes with a host of alternate settings that reflavor the game as a space opera, cyberpunk adventure, or a martial arts odyssey.</li><li><strong>Simple But Deep:</strong>&nbsp;Catch fish and ward off hostile animals using a "rock, paper, scissors, dice" combat system that relies on clever resource management, reading your opponent, weighing risk versus reward, and knowing when to step back and let your teammates help.</li><li><strong>Build Your World:</strong>&nbsp;Easy-to-follow rules help you to design your own setting---either by yourself or collaboratively with your friends.</li><li><strong>Endless Adventure:</strong>&nbsp;The book comes with six scenarios, including an introductory sandbox, a tournament, a fishing journey, a timeloop, and a tower defense minigame where the players protect their town against hundreds of eels. Also included is the roguelike Legacy Mode, which expands the game by adding an evolving adventuring region to which the players must return multiple times in order to fully conquer it.</li><li><strong>Beach Episode Compatible:</strong>&nbsp;Splice Rod, Reel, &amp; Fist into your current campaign for a light-hearted sidequest or a hot-blooded mini tournament arc.<br><br><br><strong>To Order A Print Copy, Go Here:</strong></li><li><a href="https://www.drivethrurpg.com/product/302485/Rod-Reel--Fist?term=rod+reel" rel="nofollow noopener">Rodreel Softcover</a><br><br><strong>Other Cool Fishgames By Other Cool Folks:</strong></li><li><a href="https://riverhousegames.itch.io/this-is-a-game-about-fishing">https://riverhousegames.itch.io/this-is-a-game-about-fishing<br></a></li><li><a href="https://wastelandofenchantment.itch.io/a-mosaic-strict-fishing-trip">https://wastelandofenchantment.itch.io/a-mosaic-strict-fishing-trip</a></li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTkucG5n/original/BltEpm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTUucG5n/original/eKnDoj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTYucG5n/original/oA70Ep.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTQucG5n/original/pBvPCr.png]]
<p>Rogueyard version 0.7 is now live (or undead)! Tremble in melancholic trepidation, ghastly reader!</p><p>Rogueyard is a tabletop role playing game where expired rogues use their memories of life to change reality as they recall how they have died. Players act as the ghosts of rogues, recounting their tales and attempting to learn how their end came to pass. As they unfold the details of their characters' journeys, they may contradict the dungeon master (or each other) and modify stories, encounters, and other dramatic details of their past quest in an attempt to complete an ill-fated heist.</p><p>The manual currently contains a summary of the ruleset, numerous standalone enemies and encounters, and a teaser for the sample heist. In later versions of the manual, I will be finalizing the sample heist, providing resources for character creation, and making edits &amp; providing notes based on playtesting sessions!&nbsp;Lots of work to do yet, but an idle apparition has all the time in the world...</p>
<p>This is my (late) submission to the&nbsp;<a href="https://itch.io/jam/ssjturnbased" target="_blank">Portland Indie Game Squad's June 2020 Summer Slow Jam</a>, following the "Turn-Based" Technical Theme and "Alternate Timeline" Creative Theme. A huge thank you to members of the PIGSquad community for contributing art, discussing ideas, and encouraging an inspiring jam atmosphere while I worked on this!&nbsp;I couldn't have done it without you!
</p>
<p>Please note the exceptional contributors who provided art &amp; inspiration for the project. &nbsp;You can find their information in the manual or <a href="https://gamewill.itch.io/rogueyard/devlog/160833/rogueyard-v07-is-live" target="_blank">in the v0.7 devlog</a>.</p><p>My next steps are to gather feedback on the written system's&nbsp;legibility, simplification, and some good ol' playtesting (<a href="https://pigsquad.com/summerslowjams" target="_blank" style="font-size: inherit" rel="nofollow noopener">in between the July &amp; August Summer Slow Jams, of course</a>)! If you have any questions after reading the manual, feedback from a session that you host, or interesting experiences while playing, please reach out&nbsp;by contacting me at&nbsp;<a href="https://twitter.com/gamewillpdx" style="font-size: inherit" rel="nofollow noopener">https://twitter.com/gamewillpdx</a>. There may not be enough in the manual to play quite yet, but I&nbsp;appreciate any curiosity as I work things out.</p>
<p>Sleight surely, my friends!
</p>
<p>Will</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMjgucG5n/original/2X0ddA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMjkucG5n/original/aB3Ckj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMzAucG5n/original/sKlydD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMzEucG5n/original/A%2FUIIk.png]]
<p>Roly-Polo it's a fast and fun sport videogame for up to four players.<br></p>
<p>
</p>
<p>It's available for Windows, Linux, Ouya and Android, it has support for gamepads, keyboard, and touchscreen, you can download the <a href="https://lapieza.itch.io/roly-polo#demo">FREE DEMO</a> and try it out.<br><br>In the game you control a PillBugBear (or a pair of them if you chose Twins-Mode), to win you have to score 15 points by throwing the purple ball thought the ring goals.<br></p>
<p>The controllers have an auto throw to goal aid that you can turn On and Off on the options menu, also options for twin-mode, and the number of A.I. players that you want to play with.</p>
<p>It's <strong>local-multiplayer</strong> against friends or CPU controlled players, &nbsp;and doesn't have any online mode but it can be played online using streaming software like PARSEC (<a href="https://parsecgaming.com/" rel="nofollow noopener">https://parsecgaming.com/</a>) or Remote Play Detached (<a href="https://github.com/smaTc/RemotePlayDetached" rel="nofollow noopener">https://github.com/smaTc/RemotePlayDetached</a>).<br><br>By the time of release it comes with 8 hand-made stages that are selected one after the other in semi-random order for non-stop fun, and more will be added in the near future.<br></p>
<p></p>
<p></p>
<p>I made a Discord to help people find people to play online using the streaming software or talk about the game: <a href="https://discord.gg/tVUHz8NQ" rel="nofollow noopener">https://discord.gg/tVUHz8NQ</a><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3ODgucG5n/original/rYfIdk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3OTAucG5n/original/CN9FZC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3OTEucG5n/original/QN2lxu.png]]
<p>
	<strong>A world of Police that have forgotten what, and why, they are policing.</strong>
</p>
<hr>
<p>
	<strong>Rooftop Cop</strong> is a collection of <em>five endless vignette games</em> and a <em>7-track album</em>. The games are set on a loose metaphysical timeline in which the Cops slowly lose their way.
</p>
<p>
	Each of the five parts is quite different, and varies in theme from environmental terror, to manic industry, to a sort of darkly aloof joy.
</p>
<p>
	Initially an MFA Thesis, you can read more about my process, thoughts, and feelings on the project over at 
	<a href="http://rooftopcop.com" target="_blank" rel="nofollow noopener">rooftopcop.com</a> !<br><br><strong>My 5-year Post Mortem talk, from Feb 2020,&nbsp;can be found here:&nbsp;</strong><a href="https://rooftopcop.com/POST-MORTEM" rel="nofollow noopener">https://rooftopcop.com/POST-MORTEM</a></p>
<p>
	______________
</p>
<p>
	ROOFTOP COP
</p>
<p>
	<em>I:    A Proud History</em>
</p>
<p>
	<em>II:   Capture the Flag, for One</em>
</p>
<p>
	<em>III:  The Datamines</em>
</p>
<p>
	<em>IV:  God Bles Everyone</em>
</p>
<p>
	<em>V:   Palace of the Organizer</em>
</p>
<p>
	______________
</p>
<p>
	DOESN'T SPEAK, DOESN'T LISTEN
</p>
<p>
	<em>Permanent Sunrise  [ 3:28 ]</em>
</p>
<p>
	<em>Police Cave and Memorial Estuary  [ 7:18 ]</em>
</p>
<p>
	<em>The Great Slope  [ 3:58 ]</em>
</p>
<p>
	<em>Real Live Murderers  [ 3:48 ]</em>
</p>
<p>
	<em>A Friend in the Fog  [ 3:10 ]</em>
</p>
<p>
	<em>Doesn't Speak, Doesn't Listen  [ 6:58 ]</em>
</p>
<p>
	<em>God Bles Everyone  [ 8:28 ]</em>
</p>
<p>
	<em><br>
	</em>
</p>
<p>
	<em><br>
	</em>
</p>
<p>
	______________
</p>
<p><strong>PRESS</strong></p>
<p><a href="http://www.giantbomb.com/articles/nina-freemans-top-10-games-of-2015/1100-5332/" target="_blank" rel="nofollow noopener">Giant Bomb - Nina's Top10 of 2015</a></p>
<p><a href="http://fireside.gamejolt.com/post/rooftop-cop-f8gmbx37" target="_blank" rel="nofollow noopener">GameJolt - 'Strange Name Strange Game'</a></p>
<p><a href="https://web.archive.org/web/20150313145836/http://killscreendaily.com/articles/player-artist/" target="_blank" rel="nofollow noopener">KILL SCREEN - 'Player As Artist'</a></p>
<p><a href="https://web.archive.org/web/20150203013116/http://killscreendaily.com/articles/rooftop-cop/" target="_blank" rel="nofollow noopener">KILL SCREEN - 'Ritual Manifestations'</a></p>
<p><br></p>
<hr>
<p>
	<br>
	<a href="http://www.igf.com/php-bin/entry2015.php?id=7672" target="_blank" rel="nofollow noopener"><img src="http://payload287.cargocollective.com/1/11/352040/8053274/igf-final-logo_446.png" loading="lazy"></a>
<a href="http://www.igf.com/php-bin/entry2015.php?id=7672" target="_blank" rel="nofollow noopener"><img src="http://transit7.cargocollective.com/1/11/352040/8053274/igf-student-show.png" loading="lazy"></a>
</p>
<hr>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzAucG5n/original/mlZjW2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzIucG5n/original/TiXdY0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzMucG5n/original/1l5DHN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzExMzIucG5n/original/Ou5VmQ.png]]
<p><strong><br></strong></p>
<p>Rorschach is a precise, experimental puzzle platformer amalgamation thing where you use paint to reveal your surroundings. <br></p>
<p>Spiritual successor to the <a href="https://whycardboard.itch.io">WhyCardBoard</a> game <a href="https://whycardboard.itch.io/rorschach">Rorschach</a> -- Available for free!<a href="https://whycardboard.itch.io/rorschach"><br></a></p>
<p><br></p>
<p class="text-center">~ ~ ~<br></p>
<h2>Features</h2>
<p>- Over 70 levels to conquer<br>- Beautiful, minimalist art style<br>- Music by Rolemusic</p>
<p><br></p>
<p class="text-center">~ ~ ~<br></p>
<h2>Quotes</h2>
<p>"oooOOOOOOooooo very neat"<br><em>- </em><em>WhyCardBoard</em><br><br>"v sexy game"<br><em></em><em>- </em><em>Not EmCannon</em><br><br>"You know fortnite? This is that, but better."<br><em>- </em><em>FleshnBones</em><strong><em></em><br></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/hLgwTfpKNwg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNzAuanBn/original/i%2FdD7B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNzMuanBn/original/51UyBm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjYuanBn/original/8Sz8uB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjkuanBn/original/FCrslN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjguanBn/original/KPE%2FVg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjcuanBn/original/fD4BFp.jpg]]
<p>Rose is desperate to unravel the mysteries of time travel, so she can rescue her parents who are trapped in the past. One day she feels close to an answer, but must be careful to not cause any paradoxes.</p>
<p><br>This is a puzzle game for Windows, Mac and Linux that combines time-travel and stealth gameplay.</p>
<ul>
<li>Collect crystals to time travel</li><li>Rewind out of paradoxes</li><li>20 Mind/Time bending puzzles</li><li>Story with hand-drawn illustrations</li><li>Short but sweet game</li></ul>
<p>New remastered version has:</p>
<ul><li>All new soundtrack by <a href="http://soundcloud.com/aeronic" rel="nofollow noopener">Aeronic</a></li><li>New character model for Rose</li><li>New physically based materials for everything</li><li>Newer menus from the OUYA version</li><li>New story art and effects</li><li>Much improved gamepad support</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/RJRp6auXtR4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA2LmpwZw==/original/6iD2vw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA3LmpwZw==/original/jD%2BLWh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA4LmpwZw==/original/Kde73w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA5LmpwZw==/original/uDDrnO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTEwLmpwZw==/original/CU3zqD.jpg]]
<p class="text-center"><em>Winner of Best Narrative - <a href="http://www.gameexpo.ae/indie-game-devfest/indie-game-devfest-2017-winners/" rel="nofollow noopener">World Game Expo 2017</a></em><br></p>
<p><img src="https://img.itch.zone/aW1nLzg0MjQwOS5wbmc=/original/ygroHz.png" loading="lazy"><br></p>
<p>A tyrant's campaign has torn the kingdoms within Shanur apart. Firalda, a blacksmith's apprentice seeks revenge for her father's death with the help a plague doctor, a saint princess and a witch, raising hell within the castle they are imprisoned in. What evil had torn their lands apart, had made them unite under one as sisters in arms.</p>
<p><img src="https://img.itch.zone/aW1nLzg0MjQwOC5wbmc=/original/irIn%2Bc.png" loading="lazy"><br></p>
<p>Roses Will Rise is a strategy RPG with visual novel elements that is slowly being built bit by bit. While the game has a path to follow with different endings, the player can do side quests to understand more about the Roses, the world they are in, and unlock items that can aid them in battle.<br></p>
<hr>
<p>The game is planned to be and stay free even after the game exits development. There is the option for people to name their price if they would like to support the project. Alternatively, you can support me and the game on my <a href="https://www.patreon.com/asatiir" style="font-size: inherit" rel="nofollow noopener">Patreon</a>:<br></p>
<p><a href="https://www.patreon.com/asatiir" rel="nofollow noopener"><img src="http://patreon_public_assets.s3.amazonaws.com/sized/becomeAPatronBanner.png" style="width: 208px" loading="lazy"></a><a href="https://www.patreon.com/asatiir" rel="nofollow noopener"></a></p>
<p>I might include some extras for paying players (PDF of the GDD with script is one of the few things planned).</p>
<p><em>Rating of the game is disabled until the final build is ready.</em></p>
<p><em>Game builds have been temporarily removed&nbsp; due to not being representative of the game in its current direction. Game files will return in a later date.</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-rILPd_t73c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNDgzNjk0NC5wbmc=/original/auni4%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNDgzNjk0OS5wbmc=/original/Oj%2FQT5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNDgzNjk1MC5wbmc=/original/tHesto.png]]
<p><em>Rosette Diceless</em> is an approach to roleplaying that focuses on collaborative storytelling and consent-based conflict resolution. You can roleplay everything from complex combat to intricate political debate with the same set of simple, quick-playing rules that work equally well for a tabletop game as they do for a LARP.</p>
<p>With <em>Rosette Diceless</em> you can take part in games with many more players than are practical for many roleplaying systems.&nbsp;You can&nbsp;easily split into groups without dividing the attention of a single&nbsp;game master. There's no randomness; challenge resolution is&nbsp;simple and based on resource expenditure, understanding your&nbsp;target's strategies, and setting up story to enable your success.</p>
<p><em>Rosette Diceless</em> has an agenda: it is dedicated to a consensus-based, story-first, and improvisational approach. We believe that this creates the best social environment for creating and expressing stories that incorporate everyone's creativity.</p>
<blockquote><em>"this is it. this is the type of thing i'm looking for. something with more ambition than sense, and enough sense to strangle god."</em> - an itch.io user's collection note</blockquote>
<p><em>Rosette Diceless</em> is a complete, standalone book containing the core principles, character creation and advancement rules, conflict resolution system, and story-running techniques for GM-less games.</p>
<p><em>Rosette Diceless </em>is now at version 1.0.1. For a list of changes since the initial release, download the errata from this page.</p>
<p>For additional guidance and supplemental materials, including new Traits and optional rules, <a href="https://rosetterpg.com/supplemental-material/" rel="nofollow noopener">check out the Rosette Diceless website</a>. We're working on a supplemental book compiling these and other materials to enhance your play experience.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzQ1NjMucG5n/original/6TJEhb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTIucG5n/original/Lrq0Ad.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTQucG5n/original/52%2F0Op.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTUucG5n/original/%2BB3zty.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTYucG5n/original/jsE8bo.png]]
<p><strong></strong><strong>The Four Season War has begun.&nbsp;</strong></p>
<p>In this alternate setting for <a href="https://austin-ramsay.itch.io/beamsaber" target="_blank">Beam Saber</a>, inspired by the original Mobile Suit Gundam, you will play as pilots of the space habitat-dwelling&nbsp;Satrapy of Zera, aiding in the invasion of their ancestral-- and neglectful-- home on&nbsp;Earth, constantly outnumbered but not outgunned. Play to find out what twists and turns the war on Earth will take as the war machines we made in our own image try to take control of humanity’s ancestral home.&nbsp;&nbsp;<br></p>
<p>This Supply Drop contains:</p>
<ul><li>An alternate setting for Beam Saber, including the history leading up to the current conflict, 3 new factions with 17 total squads, many detailed characters, and vehicles for the 2 major factions.</li><li>Two scenarios for the setting: 7 missions covering the Zeran occupation of Earth and the final battle in space from the Satrapy Armed Forces’ perspective, and 7 missions with 3 branching finales covering a “nightmare difficulty” scenario, in which you will play as the small Sunorc Free State attempting to steal and replicate the Terran Hegemony’s new Roving Bastion, the Armsweir.&nbsp;</li><li>Descriptions, prompts, and special rules for 10 regions visited in the missions and downtimes. </li></ul>
<p><em>Roving Bastion Armsweir:&nbsp;Operation Eclipse&nbsp;is a&nbsp;<a href="https://austin-ramsay.itch.io/beamsaber/devlog/174666/the-beam-saber-supply-drop-licence">Beam Saber Supply Drop</a>. This material is an unofficial supplement and is not affiliated with Austin Ramsay.</em></p>
<p><img src="https://img.itch.zone/aW1nLzUxNDEzOTMucG5n/original/doB0Ks.png" loading="lazy"></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTA5ODEzLzUxNDY5NTIucG5n/original/iWW373.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA5ODEzLzUxNDY5NTMucG5n/original/DtOl0d.png]]
<p><strong><a href="http://" target="_blank" rel="nofollow noopener"></a>"Thanks for trying out the latest dimension in Game Boy games!"</strong></p>
<p>For April Fools Day 2020, I took my GB Studio project, "<a href="https://setsune.itch.io/rulenttower" target="_blank">Rulent Tower</a>", the adventures of a bunch of parody furry characters in an apartment building together, and "converted" it to VR. I only had a few days to smash it together, so the scope had to be restrictive, and a lot of things were left on the table. After April Fools, I spent a few extras weeks tinkering with the project, until I was satisfied.</p>
<p>But it's now 2021, and Oculus has released the Quest 2, running at 120 Hz (effectively 120 Frames per Second)! The original Quest version was locked at 72 Hz. The change itself was relatively simple (once I could find the information), but I decided to add in a few small adjustments and additional Easter Eggs. And then something went very wrong and I basically had to redo the process all over again. Learning!</p>
<p>This is a 5 minute gimmicky prototype. There isn't a ton to do here, as it's more about the novelty of seeing these pixel graphics converted to voxel and presented as if you were actually there in GB Land. There's a few oversized props you can play with, and maybe an easter egg or two, if you poke around.</p>
<p>There are two versions available. One was built for PC VR hardware, the other built specifically for Oculus Quest and Oculus Quest 2 (and can run untethered). You'll need to sideload the APK for the Quest and Quest 2, but there's an easy-to-follow tutorial linked in the included Readme if you've never done that before.</p>
<p><strong><br></strong></p>
<p><strong>[Controls:]</strong><br>Point your blocky mitts at something that interests you. If it's interactive, the small dark green beams will switch to light green. You can grab objects from anywhere those beams can point at by pressing the trigger button, so don't worry about things being out of reach. Anything in your hands can be rotated by tilting the analog sticks Left or Right, and moved closer or further away from you by tilting those sticks Back or Forward. You can teleport around the lobby and hallway by pointing the mini voxel foxel at your desired floor location and pressing the trigger button.</p>
<p>There's no in-game menu, so on PC if you want to Reset the Scene, hit "R" on your keyboard. If you want to close the game, use your VR overlay's Close Software function, or tap "Esc" on your keyboard. If you can't do either of these things, I'm sorry but I've accidentally trapped you in blocky greenscale virtual reality. I promised myself I'd stop doing this...</p>
<p><strong><br></strong></p>
<p><strong>[Supporters:]</strong><br>I want to thank my Patrons and other Awesome and Amazing Supporters who make this stuff possible, including:</p>
<p><strong><em>Sofox</em></strong> (knock to thank him!), <strong>Commander D</strong>, <em>Darkdekumon</em>, <em>A. Kitty</em>, <em>Jeffrey Perigo</em>, <em>Jessica Bumpus</em>, MaskRider, Matt Schock, and braedon benson<br>And thank you to everyone who contributed to the itch.io <em>Bundle for Racial Justice and Equality</em>!</p>
<p>If you want to see me continue to make weird things like this, follow my Itch.io ( <a href="https://setsune.itch.io/" target="_blank">https://setsune.itch.io/</a> ) or Twitter ( <a href="https://twitter.com/setsunedev" target="_blank" rel="nofollow noopener">https://twitter.com/setsunedev</a> )! If you'd like to get credited in works and see behind-the-scenes content and previews, you might also consider backing my Patreon ( <a href="https://patreon.com/setsune" target="_blank" rel="nofollow noopener">https://patreon.com/setsune</a> ). You can also buy me a Ko-Fi ( <a href="https://ko-fi.com/setsune" target="_blank" rel="nofollow noopener">https://ko-fi.com/setsune</a> ) if you just want to give me a one-time nod.</p>
<p>Thank you so much for visiting Rulent Tower VR!</p>
<p><br></p>
<p></p>
<p><strong>[Changelog:]</strong><br><em>v1.20 [2021/02/20]</em><br>-Quest 2 upgrade (still fully compatible with Quest 1)<br>-90 Hz/120 Hz on Quest 2<br>-Changed Package information<br>-Added #1 Requested Feature: Carpet for the Lobby and Hallway<br>-Made it easier to hear a dweller's responses<br>-Added grip points to paper stacks<br>-Scooted some things around in a barely noticeable way<br>-Easter Egg (There's now two of them...?)<br>-Easter Egg inside Easter Egg</p>
<p><em>v1.11 [2021/**/**]</em><br>-Cursed</p>
<p><em>v1.00 [2020/04/01]</em><br>-"Full" Release<br>-Intro Sequence<br>-Added Hallway of Apartments<br>-Changed some characters<br>-Knocking on Doors<br>-Game Girl FX<br>-Emote Bubbles<br>-Toggle Music by Clicking on Speaker<br>-Fixed some physics weirdness<br>-Thank You Message</p>
<p><em>v0.20 [2020/04/01]</em><br>-Original "April Fools Day" release</p>
<p>And once again, there are absolutely zero bugs, and any bugs that didn't exist before definitely don't exist now.<strong><br></strong></p>
<p><strong><br></strong></p>
<p><strong>[Credits:]</strong><br><em>Voice:</em> Sofox <a href="https://twitter.com/thesofox" target="_blank" rel="nofollow noopener">https://twitter.com/thesofox</a><br><em>Music:</em> "Peppy Regal Overworld", "Swing into Victory", and "Twilight Drive" by krümel <a href="https://github.com/DeerTears/GB-Studio-Community-Assets/tree/master/Music" target="_blank" rel="nofollow noopener">https://github.com/DeerTears/GB-Studio-Community-Assets/tree/master/Music</a><br><em>Font:</em> "Pixel-Narrative" by Gabriel C. C. (with modifications) <a href="https://universesync.itch.io/pixel-narrative-pixelart-font" target="_blank">https://universesync.itch.io/pixel-narrative-pixelart-font</a><br><em>Door Sound Effects:</em> Cafofo <a href="https://assetstore.unity.com/publishers/16881" target="_blank" rel="nofollow noopener">https://assetstore.unity.com/publishers/16881</a></p>
<p></p>
<p><strong>[Software Tools Used:]</strong><br>Unity v2019.3.7f1-10f1 + v2019.4.19f1 <a href="https://unity.com/" target="_blank" rel="nofollow noopener">https://unity.com/</a><br>GB Studio v1.2.1 (Dev Build fd01821) <a href="https://www.gbstudio.dev/" target="_blank" rel="nofollow noopener">https://www.gbstudio.dev/</a><br>MagicaVoxel v0.99.4.2 + v0.99.6.2 <a href="https://ephtracy.github.io/" target="_blank" rel="nofollow noopener">https://ephtracy.github.io/</a><br>Aseprite v1.2.16.3 + v1.2.25 <a href="https://www.aseprite.org/" target="_blank" rel="nofollow noopener">https://www.aseprite.org/</a><br>Paint Shop Pro v7.0.4 <a href="https://www.paintshoppro.com/" target="_blank" rel="nofollow noopener">https://www.paintshoppro.com/</a> (You probably shouldn't use this)<br>BFXR v1.5.1 (Web) <a href="https://www.bfxr.net/" target="_blank" rel="nofollow noopener">https://www.bfxr.net/</a><br>Audacity v2.3.1 <a href="https://www.audacityteam.org/" rel="nofollow noopener">https://www.audacityteam.org/</a><br>Notepad++ v7.8.5 + v7.9.1 <a href="https://notepad-plus-plus.org/" target="_blank" rel="nofollow noopener">https://notepad-plus-plus.org/</a><br></p>
<p></p>
<p></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/9O0eyPTNYdA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODYuanBn/original/EVuaUz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODgucG5n/original/NyIDDl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODkucG5n/original/ijCXh6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1OTIuanBn/original/6vylBR.jpg]]

<p>Written during my days of quarantine, this comes from the necessity to feel less trapped.&nbsp;</p>
<p>Contains descriptions of places&nbsp;I frequently go to when overwhelmed or lonely, which you can use and add to if you'd like. Imagine a dream you barely remember but still feel throughout the day.</p>
<p>This is my first published project, and I wanted to make it short and light to read. Can be used for some evening reading, introspection or just to kill time. I sincerely hope you enjoy it!</p>
<p>This touches on topics like depression, although in a more metaphorical way than a explicit one, and I would say reader discretion is advised.</p>
<p>I am quite new to this so any comments are welcome, and if any of the file formats need to be adjusted for better reading, please let me know!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjE0NDU0LzQyMjkwNTMuanBn/original/GUhIGo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0NDU0LzQyMjkwNTQuanBn/original/vWawsm.jpg]]
<p><span class=""></span><strong>Want to break into a heavily guarded bank to steal a mafia leader's diamonds with your coworkers, but only have an hour free on your lunch break?</strong><strong></strong><br></p>
<p><strong>Compelled to haul illegal goods across the vast expanse of the united galaxies while avoiding the Intergalactic Police, but too intimidated to learn a whole new complex set of rules to do it?</strong><strong></strong><br></p>
<p><strong>Ever wanted to delve deep into the tombs of Aa'tagon Ruu and slay the ancient dragon guarding its vast treasures, but you're someplace where rolling dice and breaking out the character sheets is a bit too cumbersome?</strong><span class=""></span><span class=""><br></span></p>
<p></p>
<p><span class=""><em>Runt is an 10-page rules-light, materials-free and genre agnostic tabletop roleplaying system designed for 2+ players</em>. </span>It features simple, freeform mechanics which are easy to internalize, allowing a greater focus on the story, world and experience and less fiddling with complex rules or remembering intricate systems. It also <span class="">requires no materials to play: </span>no dice, no character sheets, no cards, nothing! This allows a game of Runt to be portable and be played whenever you're in the mood for a game.</p>
<p><span class="">It's designed for one shots and short campaigns</span>, but there's no reason it can't be used to host long term experiences with either. Additionally <span class="">it's a genre and setting agnostic system</span>, so you can play whatever experience you want to explore wherever you want it to happen!<br><br></p>
<p><span class="">The Runt Guidebook is a 10 page black and white, printable .pdf</span> that contains all the rules players need to know for running a game in the Runt system, such as:</p>
<ul><li><strong>&nbsp;</strong><span class=""><strong>Consent Systems</strong>&nbsp; </span>- an introduction on how to keep Runt fun for everyone</li><li>&nbsp;<span class=""><strong>Character Creation</strong></span><strong> </strong>- including rules for equipment and Unique Abilities your character may have</li><li>&nbsp;<span class=""><strong>Rules on "Challenges"</strong></span><strong> </strong>- a step-by-step walkthrough of Runt's simple resolution mechanic</li><li>&nbsp;<span class=""><strong>"How To Host"</strong></span><strong> </strong>- a quick primer on how to get in the mindset of Hosting a game in the Runt system</li><li><strong>Printable One-Page .pdf</strong> - all the rules on one handy sheet!</li><li><strong>Character Sheet Templates</strong> - to track your character details and keep tabs on your wonderful companions!</li></ul>
<p><br></p>
<p>Runt was made possible by the contribution of its wonderful backers on <a href="https://www.kickstarter.com/projects/runt-tabletop/runt-a-materials-free-and-rules-lite-rpg-system/" rel="nofollow noopener">Kickstarter</a>.<br></p>
<p>Runt uses the Anti-Capitalist software license: <a href="https://anticapitalist.software/" rel="nofollow noopener">https://anticapitalist.software/<br></a></p>
<p><a href="https://anticapitalist.software/" rel="nofollow noopener"><br></a></p>
<p>Have a question, comment or feedback? Drop by <a href="https://discord.gg/xJTrVwa2g4" rel="nofollow noopener">the Runt Discord</a> and leave a message!<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzQyMDM5MTUucG5n/original/0i4bms.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzUxMjUxMzcucG5n/original/c5aVQe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzQyMDM4ODEucG5n/original/QSMgV5.png]]
<p class="text-center"><iframe src="https://www.youtube.com/embed/FnVuMRBUG-g" allowfullscreen="" style="color: inherit" width="560" height="315" frameborder="0"></iframe><br></p>
<h3 class="text-center"><a href="https://discord.com/invite/MYWmsNQ" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1MzcyNzAucG5n/original/5jC6gX.png" alt="Come chat! ♥" title="Come chat! ♥" loading="lazy"></a></h3>
<h3>DESCRIPTION</h3>
<p>A game of tranquillity through the art of matching&nbsp;pieces of&nbsp;Ruya&nbsp;in her world of dreams.<br></p>
<p>Visit surrealist landscapes, decorate yourself in flowers and introspect. A <br>calming minimal experience with juicy interactions and cool colour <br>combinations to make you feel at ease.</p>
<p>The ethereal dreamlike soundtrack will tickle your senses and pull you into a state of peaceful flow.<br></p>
<h3>FEATURES</h3>
<p>◆ Challenge yourself with 64 handcrafted puzzles. Swipe, slide, pop, and <br>release cute characters to progress and unfold Ruya's memories.</p>
<h3>BEAUTIFUL &amp; HEARTFELT</h3>
<p>◆ Decorate Ruya in flowers as you play, and shake them off at the end of each level to purify Ruya's mind.<br>◆ A heartwarming illustrated visual narrative that will have you smiling.</p>
<h3>SOUND</h3>
<p>◆ Tweak binaural beats, allowing you to sink into a state of deep relaxation.<br>◆ The sound of rain, falling snow and whistling wind help to immerse you in 8 surrealist dreamscapes.</p>
<h3>LOVE</h3>
<blockquote>"Ruya&nbsp;is full of love. Every little detail in the game, each animation, all of the meanings behind everything shows this. Its a relaxing puzzle game I love playing when I want to unwind." -&nbsp;<a href="https://twitter.com/Jupiter_Hadley" target="_blank" rel="nofollow noopener"><strong>Jupiter Hadley</strong></a></blockquote>
<blockquote>"Ruya is different. Ruya is calm and quiet and meditative. Ruya might be a game about matching things, but it's something more than that." 8/10 -&nbsp;<a href="http://www.pocketgamer.co.uk/r/iPhone/Ruya/review.asp?c=76166" target="_blank" rel="nofollow noopener"><strong>Pocket Gamer</strong></a>&nbsp;"Ruya is a fantastic gem of a puzzle game for those seeking a zen like experience." 9.1/10 -&nbsp;&nbsp;<a href="https://appadvice.com/post/visit-surreal-dreamscapes-in-ruya-a-charming-puzzle-game/1221679100/369956707" target="_blank" rel="nofollow noopener"><strong>AppAdvice</strong></a></blockquote>
<blockquote>"Played it in the bath until the water went cold" -&nbsp;<strong><a href="https://www.uos.ac.uk/courses/ug/ba-hons-computer-games-design" target="_blank" rel="nofollow noopener">Dan Mayers, Eidos Interactive</a></strong></blockquote>
<p><img src="https://img.itch.zone/aW1nLzM2NTg2NDMucG5n/original/2cGhfc.png" loading="lazy"><br></p>
<p><a href="https://miracleteastudios.com/" rel="nofollow noopener"></a></p>
<h3 class="text-center"><strong><a href="https://www.gameanglia.co.uk/" target="_blank" rel="nofollow noopener"></a></strong></h3>

<iframe width="720" height="450" src="https://www.youtube.com/embed/FnVuMRBUG-g" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzYxNjMyNzgucG5n/original/ZGk8oE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDQuanBn/original/H0xjxp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDMuanBn/original/R0rz4Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDUuanBn/original/ZoQYxX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDYuanBn/original/xMQ9r3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDcuanBn/original/CzJS16.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDguanBn/original/P%2Boqmy.jpg]]
<p>The complete official OST for Safari Zone!</p>
<p>Tracklist:<br>Adorn Gully<br>Adorn River<br>Azalea Forest<br>Eastern Planes<br>Egress Cave<br>Forgotten Wasteland<br>Guidance Island<br>Interchange<br>Ivory Forest<br>Kebar Village<br>Lake Perano<br>Main Menu<br>Mount Adorn<br>Parhar Village<br>Rocky Tundra<br>Ruins Zone<br>Tropical Zone<br>Western Planes</p>

[img width=500 [https://img.itch.zone/aW1nLzQ0NDc0MjUuanBn/original/tpCHsr.jpg]]
<p>A little girl has received a board game from her father, the lighthouse keeper. Switch lighthouses on and off to navigate your ship around various dangers of the sea, delivering parts to fix a broken lighthouse.&nbsp;</p>
<p>The game was made from painted cardboard cutouts, that were then photographed.&nbsp;</p>
<p>It's a board game, it's a videogame, it's everything!&nbsp;</p>
<p><strong>ANDROID:</strong>&nbsp;<a href="https://play.google.com/store/apps/details?id=com.jarnik.safejourney" rel="nofollow noopener">https://play.google.com/store/apps/details?id=com.jarnik.safejourney</a></p>
<p><strong>CONTROLS:</strong></p>
<p>Click the lighthouses.</p>
<p><strong>CREDITS:</strong></p>
<p>Graphics: Ruchie (<a href="https://twitter.com/Ruchie_D" rel="nofollow noopener">@Ruchie_D</a>)<br>Code: Jarnik<br>Sounds: jammers of GJP2018</p>
<p>The game was created in less than 48 hours for&nbsp;<a href="https://globalgamejam.org/2018/jam-sites/game-jam-prague" rel="nofollow noopener">Global Game Jam 2018</a>, the theme was: “<strong>transmission</strong>“.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vBoIJSXCZ9Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzAuanBn/original/8%2BvBTB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzEuanBn/original/Uwy6rI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzIuanBn/original/s2bctU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzMuanBn/original/L%2FIQe2.jpg]]
<p style="text-align: center">
	<br>
</p><p style="text-align: center">
	<iframe width="960" height="540" src="https://www.youtube.com/embed/2-ZsXHJdo70">
	</iframe>
</p><p style="text-align: center">
	<br>
</p><p style="text-align: center">
	journey into the desert
	<br>
	<br>
</p><p style="text-align: center">
	<img src="https://i.imgur.com/VjR0hm0.gif" loading="lazy">
</p><p style="margin-left: 0px">
	<img src="https://i.imgur.com/fsFcpWP.gif" loading="lazy">
</p><p style="text-align: center">
	discover its secrets 
	<span></span><br>
</p><p style="text-align: center">
	master your technique 
	<br>
</p><p style="text-align: center">
	complete your pilgrimage 
	<span></span><br>
</p><p style="text-align: right; margin-right: 140px">
	<img src="https://i.imgur.com/xpDtXPp.gif" loading="lazy">
</p><p style="text-align: center">
	<img src="https://i.imgur.com/rtkgt8K.png" loading="lazy"><br>
</p><p style="text-align: right">
	<img src="https://i.imgur.com/ZZyPnu6.gif" loading="lazy"><br>
</p><p style="text-align: center">
	and try not to lose your way 
	<span></span><br>
</p><p style="text-align: center">
	as so many others have
</p><p style="text-align: center">
	<br>
</p><p style="text-align: center">
	<img src="https://i.imgur.com/EDwbD6p.png" loading="lazy">
</p><p style="text-align: center">
	<br>
</p><p style="text-align: center">
	(headphones and Xbox controller recommended)
	<span></span><br>
</p><p style="text-align: center">
	<br>
</p><p style="margin-left: 200px">
	<img src="https://i.imgur.com/Xntbaox.gif" loading="lazy">
</p><p style="text-align: center">
	a game by Daniel Linssen (
	<a href="https://twitter.com/managore" rel="nofollow noopener">@managore</a>)<br>
	with audio by J. Tree (
	<a href="https://twitter.com/IsYourGuy" rel="nofollow noopener">@isyourguy</a>)<br>
	and typography by B. Holcombe (
	<a href="https://twitter.com/takorii" rel="nofollow noopener">@takorii</a>)
</p><p style="text-align: center">
	<img src="https://i.imgur.com/3KahUYy.png" loading="lazy">
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2-ZsXHJdo70" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc0ODEvNjUzMDAucG5n/original/ijF7sX.png]]
<p>Make yourself a sandwich. <br>Take your time.<br>Put some toast on a plate. <br>Make a grilled cheese, or a artisan deconstructed veggie sammy.&nbsp;<br>It's up to you.&nbsp;<br></p>
<p><em>You know you want to.</em></p>
<p>Please send me a screenshot of your sangwich on Twitter to <a href="https://twitter.com/RealRiker" rel="nofollow noopener">RealRiker</a>, <br>I want to see what you made 🙏<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY5NDM3LmdpZg==/original/pS6Nti.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY4NTk1LmdpZg==/original/IPnIvz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY4NTc2LmdpZg==/original/XWNmcx.gif]]
<p>
<strong>AWARD WINNING GAME:&nbsp;</strong>Sapling Soul won an award at the prestigious Sandy Pug Game Awards in 2020!<br><br><br><em>Y</em><em>ou are a </em><em>Sapling Soul.</em> <em>Y</em><em>ou
belong to the Forest but the Forest does not belong to you. The
Forest </em><em>is bigger than
you in more ways than one, and you regard it with awe.</em></p>
<p><em>Most days you
lead an average life, not so different to your peers. But some days
you hear the Forest call and you answer. Always you answer. </em>
</p>
<p><em>Tonight the
Forest calls to you again. There are always mysterious creatures in
the Forest, but tonight something is amiss. There is a newcomer who
may cause trouble. You are a Sapling Soul, you are called to help.</em></p>
<p>Sapling Soul is a solo ttrpg inspired by <a href="https://temporalhiccup.itch.io/" target="_blank">Jamila R Nedjadi</a>'s&nbsp;<a href="https://temporalhiccup.itch.io/we-forest-three" target="_blank">We Forest Three</a><em>,&nbsp;</em>and is a submission to the <a href="https://itch.io/jam/jammi-jam-jam" target="_blank">#JammiJamJam</a>.</p>
<p>I plan on coming back to this game at a later date and expanding it.</p>
<p>IMAGES: Screenshots of the game text, including images of beautiful trees and forest landscapes. Each image evokes a sense of wonder and mystery.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzQuanBn/original/xtBB%2F4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzYuanBn/original/UmlpmJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzcuanBn/original/ncsmyi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzMzMzU1NTMuanBn/original/LypJVh.jpg]]
<p><em>They asked for your help. You came to save them. You failed.</em></p>
<p>Savior is a voice recording and journaling experience for one traveller set within the limits of space and communities living within the vast galaxies. Travellers enter communities, experience their wonders, and try to help prevent the fall of them from systemic and community issues.&nbsp;</p>
<p>The savior will not be able to save the community. This is their story on trying, failing, despair, hope, and learning.</p>
<p>Designed for the Ad Astra jam.</p>

[img width=500 [https://img.itch.zone/aW1nLzI3OTQwNzIuanBn/original/xOtw8R.jpg]]
<p>The school is under attack, and only the Science Club can save the day!&nbsp;</p>
<p>Guide a group of schoolgirls as they fend off an alien invasion. Use the power of Physics to blast the enemy with fire and lightning, or melt them with&nbsp;Chemistry, or destroy their will to live with the dreaded science of <em>Psychology</em>.&nbsp;</p>
<p>Explore the school, then track the enemy to their homeworld to put a stop to this invasion once and for all.&nbsp;&nbsp;What ridiculous secret is behind these attacks? Only a thorough scientific exploration can find out!</p>
<p><img src="http://www.hanakogames.com/nicole_magnet.gif" style="border: 1px solid rgb(0, 0, 0)" loading="lazy"></p>
<p>Features:</p>
<ul><li><strong>Light-hearted storyline</strong></li><li><strong>All characters in party gain experience</strong></li><li><strong>Swap active combat characters at any time</strong></li><li><strong>Save anywhere, no need to hunt for save points</strong></li><li><strong>Customise your characters by raising the skills you prefer</strong></li><li><strong>Three difficulty levels for those who hate stress or enjoy a challenge</strong></li></ul>
<p>For tips and tricks, or to trade stories with fellow players, please visit the <a href="http://hanakoforum.nfshost.com/community/viewforum.php?f=10" rel="nofollow noopener">Hanako Games Forum</a>.&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/dG5hDLrfrh8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUxMTYucG5n/original/XY10LG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwODguanBn/original/6e7r9g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwOTMucG5n/original/fZjqNM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwODYuanBn/original/QnZeqY.jpg]]
<p><strong><iframe width="500" height="281" src="https://www.youtube.com/embed/eI49g3pDGHs" frameborder="0" allowfullscreen=""></iframe></strong></p><p><em>"I playtested this game and it was super fun!" -<strong>Tim Schafer</strong><br></em></p><p><em>"Might be my favorite board game right now." -<strong>Rich Vreeland</strong> aka disasterpeace</em></p><p><em>"Best flippin' pirate simulator board game I've ever played, and I'm a big fan of pirates." -<strong>Phil, of "Phil and Spencer", Destructoid.com</strong></em><em></em></p><hr><p><strong>Scoundrels</strong> is a 3-6 player tabletop game, that takes anywhere from 45-120 minutes. In the game, each player uses a random hand of Action cards (Swords, Sails, and Cannons) to do as many dastardly deeds as their hand allows. Each player moves their ship around the map, pillaging, boarding, cannoning, and burying treasure, trying to gain the most Infamy points. Infamy is measured in Tokens and Treasure cards.</p><p>But players must be wary, because they only draw new cards after everyone has gone, so if they don't spare enough cards for defense, they may find themselves the unwitting victim of the next player down the line. They may even become.. the Ghost Ship. <br><br>Scoundrels is a push-your-luck, thematic game not inspired by any particular mechanic, but designed to make each player feel like a pirate. It's a wild, rubber-banded game, where the lead can change constantly, and nothing is certain. For the life of a pirate is uncertain. A torrid affair, an uncertain mess, or just maybe, a glorious tale. <br><br>Download the rules here!<em> <a href="http://www.randyo.net/files/scoundrules.pdf" rel="nofollow noopener">http://www.randyo.net/files/scoundrules.pdf</a></em></p><hr><p><em>This Print-n-Play edition of the game includes the rules and several PDFs of all the cards, tokens, and the map. The art has been modified to look best from a home printer.</em><br></p><p><em>If you'd like to, you can order your own cloth map for the game. (It is suggested to order a Kona Cotton fat quarter.  <a href="http://www.spoonflower.com/fabric/3861628" rel="nofollow noopener">http://www.spoonflower.com/fabric/3861628</a></em></p><p><i><a href="http://www.ScoundrelsGame.com" rel="nofollow noopener">www.ScoundrelsGame.com</a></i></p><hr><p><em><em>There are over 140 cards and 80 different tokens in the game to print out.</em></em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/eI49g3pDGHs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTE0LnBuZw==/original/IRGbgR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTEyLnBuZw==/original/gHWpBd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTE1LnBuZw==/original/ydao7G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTEzLnBuZw==/original/V5sJyx.png]]
<p><em>Season of Dreams</em> is a table top Roleplaying game where your heroes go back and forth between modern Earth and the Gloom - a fictional reality inspired by Celtic mythology, but modified by the characters dreams, memories and actions.<br></p>
<p>Using the Powered by the Apocalypse System, your group will weave a cooperative story of magic, monsters and mystery, with moments from the characters vice, goals and virtue.&nbsp;<span></span><br></p>
<p>Your characters can interact with factions which boil down to monarchists, capitalists, socialists and a theocracy, there are also 2 earth based agencies, and your group can decide how much you interact with any of them.</p>
<p>Inspired by the stories of Neil Gaiman, The Magicians and the&nbsp;Twilight Zone series.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ0NzQ0NzAucG5n/original/fzrc0v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ4Njg1NDgucG5n/original/qLbUyT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ4Njg1NTAuanBn/original/tzNh3X.jpg]]
<p>It is the golden age of piracy. The night has been long - or is it day already? - and you have been drinking heavily, sitting around one of the tables of the shady, dirty, and loud interior of your favorite watering hole, sharing tales from the high seas, each larger and more unlikely than the last. Tales of grandeur and ridicule. Tales of the Kraken, the wildest storms, and improbable feats. The sea is your one true love, be it as a pirate, a trader, a soldier, or a fisher. It is an unhealthy relationship of stiff winds, burned skin, and salty water, but you love her nonetheless.</p>
<p>In "<strong><em>Seemannsgarn</em></strong>" you take turns telling tall tales from the seas, your character claims to have experienced. You draw cards, which offer you prompts, weave a tale from those prompts and make a roll. Depending on the result of your roll the tale is true, exaggerated or completely made up. Other players may then decide which parts of the story are made up and tell the true story. During the game you draw symbols on a map that represent the tales you told.</p>
<p><strong>Content warning for sea creatures. Characters lie to each other commonly in this game. This is not done with ill intentions, but as a sort of competition of who can come up with the most unlikely of stories.</strong></p>
<p><strong>To play you need</strong></p>
<ul><li>2-4+ players (no GM)</li><li>Tokens equal to the number of players</li><li>A standard poker deck</li><li>Beverages</li><li>1 six-sided die</li><li>A prop that serves as a baton, signifying&nbsp;whose turn it is (a large mug, a telescope, a prop knife, ...)</li><li>Safely tools like X-Card or Lines &amp; Veils (research them if you do not know them)</li><li>A large sheet of paper and something to draw with. This will serve as your map</li></ul>
<p><strong>What you get</strong></p>
<ul><li>Full color 10 page pdf, including cover, credits, etc</li><li>printer friendly version without images</li></ul>
<p>This game was made as an entry to the <a href="https://twitter.com/hashtag/monthlymicrojam" rel="nofollow noopener"></a><a href="https://twitter.com/hashtag/monthlymicrojam" target="_blank" rel="nofollow noopener">#monthlymicrojam</a> July 2020 which can be found <a href="https://itch.io/jam/monthly-micro-jam-july-2020" target="_blank">here</a><span></span>. Entrants to the jam should feel free to grab a community copy.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODYyMzQuanBn/original/kzxjhC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODk4NTMuanBn/original/uCbwPg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODg1NjcuanBn/original/LhDpe5.jpg]]
<h2 class="text-center">Story</h2>
<p class="text-center">Another AI finds themselves trapped by malevolent beings. This time it's far more serious. You have to escape your destiny. You have to escape your purpose.<br></p>
<p class="text-center">Delve into the world of Self.destroy() and find out how to save everyone. Maybe not everyone...<br></p>
<h2 class="text-center">About the game</h2>
<p class="text-center">I wanted to make another game for some time. Mental health and other things stopped me from progressing as fast as I would have liked.</p>
<p class="text-center">Now it's done. Another game, with a few improvements. Find old friends, new friends and even a boss fight!</p>
<p class="text-center">You are always on a timer and have to look out for your health. Do you rush through or do you risk exploring?</p>
<p class="text-center">Both choices have their advantages and both have their prizes!</p>
<p class="text-center">I'm most proud of the boss fight. As it's something I've never done before and I think I did well.</p>
<p class="text-center"><br></p>
<h2 class="text-center">Controls</h2>
<p class="text-center">You can use keyboard or gamepad control. I only have an Xbox gamepad, so I can't guarantee for other types to work.</p>
<p class="text-center">Keyboard control:<br></p>
<ul><li>Movement: WASD/Arrow keys</li><li>Shooting: Space</li><li>Shield: CTRL/Shift</li><li>Pause game: P/Pause</li><li>Menu select: Space/Enter</li><li>Return to main menu (removes progress): ESC</li></ul>
<p class="text-center">Gamepad controls (Xbox):</p>
<ul><li>Movement: Left stick/D-Pad</li><li>Shooting: A/Bottom bumpers (both sides)</li><li>Shield: X/Top bumpers (both sides)</li><li>Pause game: Start
</li><li>Menu select: A</li><li>Return to main menu (removes progress): B</li></ul>
<h2 class="text-center">Music</h2>
<p class="text-center">All music can be found on <a href="https://opengameart.org" target="_blank" rel="nofollow noopener">opengameart.org</a></p>
<ul><li>Main menu: <a href="https://opengameart.org/content/leave-the-world-tonight-chiptune-edit" target="_blank" rel="nofollow noopener">Kim Lightyear - Leave the world tonight</a></li><li>Settings/Credits: <a href="https://opengameart.org/content/crystal-cave-song18" target="_blank" rel="nofollow noopener">cynicmusic - Crystal Cave</a>&nbsp; <a href="http://pixelsphere.org/" target="_blank" rel="nofollow noopener">Pixelsphere</a></li><li>Main Game/Lose game over: <a href="https://opengameart.org/content/endgame-singularity" target="_blank" rel="nofollow noopener">Maxstack - Endgame: Singularity</a></li><li>Boss Fight: <a href="https://opengameart.org/content/data-corruption" target="_blank" rel="nofollow noopener">FoxSynergy - Data Corruption</a></li><li>Win game over: <a href="https://opengameart.org/content/drifting-beyond-the-stars-background-ambient" target="_blank" rel="nofollow noopener">HitCtrl - Drifting beyond the stars</a></li></ul>
<h2 class="text-center">Special Thanks</h2>
<p class="text-center">Special thanks to my patrons, as they support me and allow me to make these games!</p>
<ul><li><a href="https://www.patreon.com/MapleFeline/creators" target="_blank" rel="nofollow noopener">arc</a></li><li><a href="https://www.patreon.com/ulvra/posts" target="_blank" rel="nofollow noopener">Pupper ^-^ (Ulvra)</a></li><li><a href="https://www.patreon.com/Smallergod/posts" target="_blank" rel="nofollow noopener">Jenny Koda</a></li><li><a href="https://www.patreon.com/compfox" target="_blank" rel="nofollow noopener">Zac</a></li></ul>
<p class="text-center">If you would like to have your name here and/or get other great perks, consider supporting me on my <a href="https://www.patreon.com/maxine_red" target="_blank" rel="nofollow noopener">Patreon</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMjgucG5n/original/TNSDAG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMjkucG5n/original/vNxsiR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzAucG5n/original/lmh0x2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzIucG5n/original/4cGXAw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzMucG5n/original/LL6qXK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzQucG5n/original/gYgSho.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzYucG5n/original/DCNs%2BN.png]]
<p><strong>Septiny</strong> is a 2D Rage Platformer game where the goal is to beat 3 levels in under 7.777 seconds. The twist? Whenever you beat all three levels, you end up replaying a slightly different (and harder) version of them, up to 7 times. The game keeps track of your time, so try and beat other players times!</p>
<p>Controls: AD/Arrow Keys to move. Spacebar/W to Jump. M to mute audio, Escape to quit.<br></p>
<p>The game was made by me, Gabriel Russell. The music was provided by <a href="https://www.youtube.com/channel/UC4RLTeX7SwSNR60qErHZkCA" target="_blank" rel="nofollow noopener">Arcane Toaster</a> for use in this game jam.<br></p>
<p>This game uses the following art assets:</p>
<p><a href="https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack" target="_blank">Kyrise: "Free 16x16 RPG Icon Pack"</a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-1" target="_blank">Pixel Frog: "Pixel Adventure 1"</a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-2" target="_blank">Pixel Frog: "Pixel Adventure 2"<br></a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-2" target="_blank"><img src="https://img.itch.zone/aW1nLzU3MDA1NjIucG5n/original/HcDf2M.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDA1NzkucG5n/original/Vagipb.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDA1OTMucG5n/original/YutkYW.png" loading="lazy"></a><br></p>

[img width=500 [https://img.itch.zone/aW1nLzU3MDA1MTIucG5n/original/sYfMO6.png]]
<h1>Serendipity</h1>
<p>[defn.] You’d like to think that you’re not anyone special, yet the strangers you’ve met were special in their ordinary. In some stories, it’s almost like they needed you. They called it serendipity.<span class="">&nbsp;</span></p>
<p><span class=""></span>
</p>
<p><span class="">[verb.] Flip a page at random.<span class="">&nbsp;</span></span></p>
<p><span class="">Meet someone. [Alt.] print this on card stock and cut out the polaroids as cards and sketch as you please.<span class="">&nbsp;</span></span></p>
<p><span class=""></span>
</p>
<p><span class="">Play a song in between cards/pages. Sing, dream.<span class="">&nbsp;</span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODM1NjExLzQ2ODI1ODQucG5n/original/XRMEFp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM1NjExLzQ2ODI1ODUucG5n/original/7%2FLsYv.png]]
<p>“a very good roguelike”<br><a href="https://steamcommunity.com/linkfilter/?url=http://www.newyorker.com/online/blogs/culture/2014/04/video-games-that-embrace-irony-and-death.html" target="_blank" rel="nofollow noopener">The New Yorker</a><br><br>“Shattered Planet is breathing new life into the rogue-like genre”<br>4/5 –&nbsp;<a href="https://steamcommunity.com/linkfilter/?url=http://supergamedroid.com/2014/04/12/shattered-planet-review" target="_blank" rel="nofollow noopener">Super Game Droid</a><br><br>“frankly beautiful”<br><a href="https://steamcommunity.com/linkfilter/?url=http://www.cnet.com.au/shattered-planet-towards-the-perfect-procedural-death-labyrinth-339346988.htm" target="_blank" rel="nofollow noopener">CNET Australia</a><br></p>
<p><br></p>
<p>Explore a dangerous planet that's different every time and try to survive! The Galactic Union's job for you is clear: research the alien wildlife -- for science! However, in this case, researching may include lasers, explosions, hungry aliens, space sushi, and other similarly delicious-or-terrifying hazards.<span></span></p>
<p>Whether you survive or die, you'll come away better than you started!<br><br>Features:&nbsp;</p>
<ul><li>Procedurally generated levels&nbsp;</li><li>200+ items, from swords to cookies to grenades&nbsp;</li><li>Alien monsters to fight or befriend</li><li>Everyone gets the same Daily Challenge - compare your progress with your friends</li><li>Class system - each clone skin has a different advantage</li><li>Pet cloning - maintain your companions' DNA in their own clone vat</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/NLqkRSm6h28" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjUucG5n/original/5YetCH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjEucG5n/original/j9Xwhk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjQucG5n/original/XVD5Md.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjIucG5n/original/oCKRdC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjYucG5n/original/seQDMj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjkucG5n/original/xzYYXU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjMucG5n/original/W3hNBK.png]]
<p>Once upon a time, there was a sweet little girl with a big imagination. Her name was Jennifer (Jenny for short), and her world was full of adventure. A closet became a sanctuary. A basement became a secret passage to the Land of Elves. And her home became a nightmare world with no warning, rhyme or reason beyond the unpredictable winds of her father's drunken rage.</p>
<p>Help little Jenny survive seven days with her alcoholic father. From there, via New Game Plus, walk the path of Love, Indifference or Hate to decide who she becomes.</p>
<p>Highlights include:
</p>
<ul><li><a name="OLE_LINK11"></a>Nine total endings: three basic, three intermediate, three final</li><li>New Game Plus</li><li>A story to suit your mood: optimistic, pessimistic or destructively nihilistic depending on which path(s) you choose</li><li>Free Day Mode - give little Jennifer run of the house without parental terror (unlocked in Free Day Mode)</li><li>Minimal combat... and one hidden boss.</li></ul>
<hr>
<p>
	<em><strong>My Website: <a href="https://gamingpixie.com/" target="_blank" rel="nofollow noopener">gamingpixie.com</a></strong></em><em><strong></strong></em><br>
</p>
<hr>
<p>
	<em>Note: If you'd like to play the original version, <a href="https://gamingpixie.itch.io/she-who-fights-monsters" target="_blank">it's here</a>.</em><br>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/p_c58VG733Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDQ4OTQ5LmpwZw==/original/sJTZK%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDQ4OTU0LmpwZw==/original/LNqKPl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDU5MTI0LmpwZw==/original/SR0gDx.jpg]]
<p><img src="http://flatbutton.co/shnip/img/shnip_pc_header.gif" loading="lazy"></p>
<p><br></p>
<p>Shn!p is an original puzzle featuring satisfying explosions.<br></p>
<p>It's about clearing a field of dots.</p>
<p>Complete 160 levels that will have you popping dots off blockers, through blackholes, and more special mechanics!</p>
<p><strong>FEATURES</strong></p>
<ul><li>Polished puzzle experience with satisfying explosions</li><li>160 handcrafted levels</li><li>Special mechanics: blockers, color changers, black holes, magnets, and wormholes</li><li>Color blind friendly mode</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/IWAh3iyIkfo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyMi5naWY=/original/UxN13K.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyMy5wbmc=/original/UkTfXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNC5wbmc=/original/8%2Bj5KJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNS5wbmc=/original/iSQxU%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNy5wbmc=/original/NSeQSI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyOC5wbmc=/original/VUS7GX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyOS5wbmc=/original/QTkVzF.png]]
<p><em>It’s a tough, unforgiving, dangerous galaxy. Out there&nbsp;on the fringes of solar systems controlled by interstellar&nbsp;ultra-capitalist corporations, where pirates and bandits&nbsp;and marauders roam, <strong>mercenaries </strong>make a living taking&nbsp;dangerous jobs for not enough pay, hoping to scrape&nbsp;enough together to buy a better gun that could be the&nbsp;difference between success and bloody, painful failure.&nbsp;And if they die, the ubiquitous corporate respawn&nbsp;industry spits them out in a new body, for as long as it’s&nbsp;profitable.</em></p>
<p><em>You are one of these bombastic, gun-toting, problem-solving, explosion-loving, daredevil-driving mercenaries, out to make a name for yourself <strong>blowing away&nbsp;bad guys for fun and profit</strong>. You do what the mission demands, and look good while doing it.&nbsp;</em></p>
<p><em>Let’s make some <strong>mayhem</strong>.</em></p>
<p class="text-center">---</p>
<p><em>Shoot 'n' Loot</em> is a rules-lite tabletop roleplaying game for 2-5 players, including a GM. It is built in the easy-to-learn, fiction-first style of games like <a href="https://lumpley.itch.io/apocalypse-world" target="_blank">Apocalypse World</a><em></em> (D. Vincent Baker and Meguey Baker),&nbsp;<a href="https://dungeon-world.com/" target="_blank" rel="nofollow noopener">Dungeon World</a><em></em> (Sage LaTorra and Adam Koebel),&nbsp;and&nbsp;<a href="https://www.drivethrurpg.com/product/171286/The-Sprawl----MIDNIGHT" target="_blank" rel="nofollow noopener">The Sprawl</a><em></em> (Hamish&nbsp;Cameron). It uses a unique map-drawing approach to fast-paced, lightly tactical combat. It contains everything you need to jump straight into a setting-agnostic&nbsp;<strong>high octane</strong> world of <strong>explosions</strong>, <strong>bullets</strong>, and <strong>mayhem</strong>.<br></p>
<table>
<tbody><tr>
<th><h3>Details</h3></th>
<th><h3>Themes</h3></th>
</tr>
<tr>
<td>
<p><img src="http://secretprincegame.com/image/icon/group.svg" style="max-width: 100%; height: 16px" loading="lazy">&nbsp;2-5 Players</p>
<p><img src="http://secretprincegame.com/image/icon/time.svg" style="max-width: 100%; height: 16px" loading="lazy">&nbsp;2-3 Hours per session, <br>short campaigns</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy">&nbsp;Ages 13+</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy">&nbsp;GM Required</p>
</td>
<td>
<p><img src="http://secretprincegame.com/image/icon/spaceship.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Sci-Fi and Cyberpunk</p>
<p><img src="http://secretprincegame.com/image/icon/fire.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> Action and Explosions</p>
<p><img src="http://secretprincegame.com/image/icon/team.svg" style="height: 16px" loading="lazy"> Cooperate with friends</p>
<p><img src="http://secretprincegame.com/image/icon/dice.svg" style="height: 16px" loading="lazy"> Roll to find out what happens</p>
<p><img src="http://secretprincegame.com/image/icon/book.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Tell a story together</p>
</td>
</tr>
</tbody></table>
<h2>What's Familiar</h2>
<p><em>Shoot 'n' Loot</em> is Powered by the Apocalypse. It uses a roll of 2d6 +/- a skill to resolve challenges, and each <strong>move </strong>has built in, fiction-focused prompts for failed rolls, partial successes, and complete successes. Each character has a Playbook which gives them access to moves unique to them. As you level up through completing missions, failing rolls, and complicating missions through personal <strong>drives</strong>, you choose new moves to expand your character's options.</p>
<h2>What's Unique</h2>
<p><em>Shoot 'n' Loot</em> uses a new map-drawing approach to fiction-first tactical combat. It's not grid-based combat, nor is it purely theatre-of-the-mind.&nbsp;</p>
<blockquote>"It's like&nbsp;<em>The Quiet Year</em>, but with more explosions."<br>—The <a href="https://www.twitch.tv/welcomepartyrpg" target="_blank" rel="nofollow noopener">Welcome to the Party</a> team</blockquote>
<p>Combat is fast and dangerous, but don't worry: when your character dies, they'll just come back at a nearby respawn station... to a point.<br></p>
<p>Characters wield an array of wild, randomly generated guns across 10 weapon types with 100 possible tags, and 100 possible looks. Some tags give concrete bonuses or penalties while some are part of the fiction.</p>
<h3>Playbooks</h3>
<ul><li><strong>The Soldier</strong> protects themselves and their allies, making them harder to take down, and takes out vulnerable targets with grenades.</li><li><strong>The Berserker</strong> gets in close and deals massive damage at huge risk to themselves.</li><li><strong>The Agent</strong> ghosts unnoticed around the battlefield, picking off isolated targets with decisive blows.</li><li><strong>The Wheel-Jockey</strong> is one with the machine, making rust-bucket cars dance across wastelands and through city streets.</li><li><strong>The Gun&nbsp;Runner</strong> makes their fortune in the machinery of endless strife, and always knows how to cut a deal.</li><li><strong>The Sentry</strong> watches the battle from afar, waiting for the perfect time to strike.</li></ul>
<h2>What's&nbsp;Included</h2>
<p>Your download of&nbsp;<em>Shoot 'n' Loot</em> includes a full rulebook, rules for combat and weapon generation, and 6 playbooks.</p>
<p>You will need <strong>dice</strong>, <strong>paper</strong>, <strong>pens or drawing items</strong>, <strong>tokens </strong>for characters, tokens or <strong>diecast cars</strong> for vehicles.</p>
<h3>Setting Agnostic</h3>
<p><em>Shoot 'n' Loot</em>&nbsp;<strong>does not</strong> include any&nbsp;<strong>setting information</strong>, worldbuilding, or fiction. You can play games of&nbsp;<em>Shoot 'n' Loot</em> in any science fiction or cyberpunk setting that allows mercenaries to operate with total or partial impunity, features unimaginably large and powerful capitalist corporations, and has the kind of technology required to bring people back from the dead for profit. You can develop your own setting as you play, or port&nbsp;<em>Shoot 'n' Loot</em> into an existing world.</p>
<h2>Creative Commons</h2>
<p><a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" loading="lazy"></a><br>This game is licensed under a <a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener">Creative Commons Attribution 4.0 International License</a>. That means you are free to adapt, edit, and remix this game as long as you credit&nbsp;<strong>Mitchell Salmon</strong>. This license does not extend to the graphics and photos used, which remain the copyright of their respective owners.</p>
<h2>Actual Play</h2>
<p>The team from&nbsp;<a href="https://www.twitch.tv/welcomepartyrpg" target="_blank" rel="nofollow noopener">Welcome to the Party</a> played&nbsp;<em>Shoot 'n'&nbsp;Loot</em> on stream. Check out how it went for them on YouTube.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/2iEYMYhJB30" frameborder="0" allowfullscreen=""></iframe>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2iEYMYhJB30" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDYuanBn/original/MH8aNb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDcuanBn/original/UbIZYL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDguanBn/original/B30PoE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDkuanBn/original/NMhLlR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgyNzYuanBn/original/Zz4ZAA.jpg]]
<p>Somewhere in the deepest reaches of space...</p>
<p>An execution is to be carried out...</p>
<p>Play as Orange, a perfect simulacrum of the Orange Experience. Be freed from prison by a strange hero.&nbsp;</p>
<p>SHRINESPARK Personal Software simulates the following experience:</p>
<ul><li>Take the role of a creature.</li><li>About 3 hours of content!</li><li>Slaughter foes via turn-based mechanics (Real Life does not support this).</li><li>Become nauseous/on fire.</li><li>Enjoy the company of others.</li><li>Browse online&nbsp;forums which update based on your actions!</li></ul>
<p>SHRINESPARK is made wholly by one person!&nbsp;Experience the world as seen by "The Homie's Boon"...</p>
<p>TOO MUCH juiced-up original pixel art to gaze at on your quest! Art critics across the globe have been left FOETID CORPSES by the sight!</p>
<p>STUPID quantities of head-tapping original audio will have you too shakin' to play! It should be ILLEGAL to put this many tunes in a game!</p>
<p>Purchase the soundtrack here:&nbsp;</p>
<p><a href="https://homieboon.bandcamp.com/album/shrinespark-original-soundtrack" rel="nofollow noopener">https://homieboon.bandcamp.com/album/shrinespark-original-soundtrack<br><br></a></p>
<p>Message me to request a community copy code</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAyODIucG5n/original/rgqKKA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAyODUucG5n/original/lZBc%2FR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAzNDIucG5n/original/5%2F3yAj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAzNTMucG5n/original/wJEQ1d.png]]
<h5>
an all-ages space-garden&nbsp;by <a href="http://www.mrcolin.com" rel="nofollow noopener">Colin Sanders</a> and <a href="http://www.jasonrtbond.ca" rel="nofollow noopener">Jason RT Bond</a>
</h5>
<p>
	<iframe width="560" height="315" src="https://www.youtube.com/embed/tUZejiohn0w" frameborder="0" allowfullscreen="">
	</iframe>
</p>
<p>
	As Shu, a space-cactus of the bouncy persuasion, you spring from planet to planet, spreading plant life and finding new friends. Create a forest! Enjoy a splash in a pond! Play tag with a bee! Make weird hybrid plants! Launch a giraffe into orbit!
</p>
<p>
	<em>Shu's Garden</em> is a fully open playground with no hard goals, scores or missions. Just kick back, explore and experiment in this space-garden full of friends, foliage, and fun.
</p>
<p>
	1—4 players.</p>
<p>
	Follow us on 
	<a href="https://www.facebook.com/heyshugame/" rel="nofollow noopener">Facebook</a> or <a href="http://www.twitter.com/ShusGarden" rel="nofollow noopener">Twitter</a> for updates.
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/tUZejiohn0w" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNjk1LmdpZg==/original/0ToZlg.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNzA0LmdpZg==/original/kEwWkn.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNzA2LmdpZg==/original/%2B7tBwT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODE4LnBuZw==/original/kb0sz4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODE5LnBuZw==/original/ioY3xS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIwLnBuZw==/original/xZ9caP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIxLnBuZw==/original/nQbp4c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIzLnBuZw==/original/ixTc%2Fy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIyLnBuZw==/original/8kJGFw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMjE2MTIzLnBuZw==/original/U8En%2Bc.png]]
<h2>SHUT IN is a short dark comedy/psychological horror adventure game which explores depression and isolation by trapping you inside your own house.</h2><h3>==The brand new SHUTDOWN update is now live!--</h3><p></p>
<p>Your task is simple: Get out of bed, go outside, and get some Fresh Air. Think you can handle that?</p>
<p>Oh, but it might not be quite that simple. Your house isn't looking quite like it used to. You don't recognise any of these photos, everything's gotten dirty and disgusting, cracks seem to be opening up everywhere, and you're SURE everything didn't used to be so... constantly trying to kill you.<br><br>Maybe it's not worth it. Maybe go back to bed. Try again tomorrow.<br><br>If you do decide to keep going, you'll have to face strange puzzles, bizarre and uncomfortable obstacles, and a narrator who is unreliable at best, and downright insulting at worst. You'll have to get through your day under a constant barrage of judgment, sarcasm, and melancholy. If you can cope with that. Idiot.<br><br>SHUT IN is about tension and discomfort in a familiar environment. Your greatest tools are also your worst enemies. Common sense will keep you alive, but it might not get you very far. Curiosity can have great rewards, but will probably just get you killed.<br><br>But don't worry. When you (inevitably) die - because you fell down the stairs, were too stupid to operate an oven properly, got ripped apart by untold invisible horror, something like that - you can always just give up. Try again tomorrow. Or the next day. Or the next day.</p>
<p><strong><em>--SHUT IN is a short game. It will take you&nbsp;1-2 hours to experience everything, depending how quick you are with puzzles.--</em></strong><span></span></p>
<h4>Here's what people have been saying about the game:</h4>
<p></p>
<p><em>“Tackles the subject of mental health in a really clever way... whilst striking the perfect balance with its dark comedy.”<br>9.2/10 –&nbsp;<a href="https://fullsync.co.uk/shut-in-review/" target="_blank" rel="nofollow noopener">Full Sync</a><br><br>“With depth far beyond the initial on-the-surface horror story, this experience taps into the evocativeness of a mental health crisis.”<br>9/10 –&nbsp;<a href="http://www.cubed3.com/review/6235/1/shut-in-pc.html" target="_blank" rel="nofollow noopener">Cubed3</a><br></em></p>
<p><em>"It's funny. It's darkly funny. It's cruelly funny."</em> <a href="https://buried-treasure.org/2020/11/shut-in/" target="_blank" rel="nofollow noopener">Buried Treasure</a></p>
<p><em>“Exploring themes of mental illness has certainly been done in games before, but SHUT IN does it exceptionally well.”</em><br><strong>4/5 </strong>– <a href="https://adventuregamers.com/articles/view/shut-in" target="_blank" rel="nofollow noopener">Adventure Gamers</a></p>
<p><em>“I’ve never felt more unintentionally *seen* by a video game before.”&nbsp;&nbsp;<a href="https://www.heypoorplayer.com/2020/10/29/shut-in-review-pc/" target="_blank" rel="nofollow noopener">HeyPoorPlayer</a>&nbsp;</em></p>
<p><strong></strong></p>
<h1>Key Features:</h1>
<ul><li>Over a dozen unique ways to die!</li><li>Probably a way to survive!</li><li>Original atmospheric horror soundtrack by composer Luc Wilkinson.</li><li>Everything else done by person/mess Cael O'Sullivan.</li><li>A dangerous house full of original puzzles, and loads of ways to get them wrong!</li><li>A hint system which isn't that helpful, and often insults you!</li><li>Multiple items to experiment with, each with tons of unique interactions that solve no puzzles and achieve nothing.</li><li>Option to just stay in bed forever!</li><li>Quite short, so it's over quicker!</li><li>Writing up these features is exhausting...</li><li>Try again tomorrow.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/46c2wBZAM0s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAyOTguZ2lm/original/5gGiXY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMjIuZ2lm/original/xSVCNC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMTQuZ2lm/original/o349Nk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUwNzIuZ2lm/original/EntJA1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUwNzYuZ2lm/original/6FMgHO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUzMTIuZ2lm/original/hT%2BOTW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMjYuZ2lm/original/yWrvOZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMDYuZ2lm/original/FFpsrT.gif]]
<p class="text-center">take a stroll<br>take a picture</p>
<p><img class="custom-img1" src="https://img.itch.zone/aW1nLzM1MjgzNTMuanBn/original/JP7mGN.jpg" loading="lazy"></p>
<p class="text-center">visit hundreds upon hundreds<br>of generated islands</p>
<p><img class="custom-img2" src="https://img.itch.zone/aW1nLzM1MjgzNTguanBn/original/9U2zDq.jpg" loading="lazy"></p>
<p class="text-center">share your photographs <br>on Twitter <a href="https://twitter.com/search?q=%23ShutterStroll" target="_blank" rel="nofollow noopener">#ShutterStroll<br></a>or on <a href="https://disord.link/ShutterStroll" target="_blank" rel="nofollow noopener">Discord</a></p>
<p><img class="custom-img3" src="https://img.itch.zone/aW1nLzM1MjgzNjAuanBn/original/2Hj2xE.jpg" loading="lazy"></p>
<p class="text-center">relax<br>there is no goal<br>take your time</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzMzkuanBn/original/s%2B6CDU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDAuanBn/original/ypakde.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDEuanBn/original/y6%2B0cy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDUuanBn/original/byg4Q%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDQuanBn/original/J0Plvu.jpg]]
<h5 class="text-center"><span></span></h5>
<h3 class="text-center"></h3>
<h3 class="text-center">sideliner is a minimalist puzzle game where you use your current path to create new ones.</h3>
<p></p>
<ul><li>Land on the goal across 40 levels of casual puzzle play</li><li>Clean, minimal design with different themes</li><li>Gamepad support</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MjkucG5n/original/IyoopL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzEucG5n/original/w1HKLO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzAucG5n/original/700BHt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzIucG5n/original/urnBub.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzMucG5n/original/MonUyI.png]]
<p>Grab a cup of coffee and relax with Sidewords.</p>
<p>Sidewords is part logic puzzle, part word game, all original.&nbsp;</p>
<p>No timers. No penalties. No pressure. Just you and a good puzzle.</p>
<p>Sharpen your mind with hundreds of puzzles, from small and quick, to large and captivating. Plus three new puzzles to do every day! There’s even a bonus game included!</p>
<p>Choose a color scheme that fits your mood and environment. Get your morning started with bright colors, or unwind at the end of a long day with a dark theme.</p>
<p>So sit back, relax, and enjoy a good puzzle. You deserve your Sidewords time.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qW4HTgy2nDw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2OS5wbmc=/original/CjQ%2FlI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU3MC5wbmc=/original/y21t%2BN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2Ny5wbmc=/original/GwlNuD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2Ni5wbmc=/original/PevmiQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2OC5wbmc=/original/0%2BN5wt.png]]
<p class="text-center">Despite living in a three dimensional world, our eyes view everything through a two dimensional image.&nbsp; The light in front of us is pressed onto a flat surface, a simple plane of colors which we call “sight”.&nbsp; Distance is an illusion and depth is a lie; only through size and movement can we truly tell how far something is.&nbsp; But century after century of living with these eyes, living with these lies, has had us grown used to viewing our three dimensions with a dimension of missing information.</p>
<p class="text-center">So, how would we see if our world was two dimensional?&nbsp; Simple: we’d have only one dimension of sight.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI0MzYzMTcucG5n/original/6vzVm4.png" loading="lazy"><br></p>
<p class="text-center">Requires a mouse and keyboard to play.<br></p>
<p class="text-center">Programming and visuals by <a href="https://winterbeak.itch.io/">winterbeak</a>.&nbsp; Audio by <a href="https://saiziju.itch.io/">saiziju</a>.</p>
<p class="text-center">Source code can be found&nbsp;<a href="https://github.com/winterbeak/sightline" target="_blank" rel="nofollow noopener">here.</a></p>
<p class="text-center">The jam version was made in 48 hours&nbsp;for GMTK’s 2019 Game Jam: Only One, and contained only 9 levels.&nbsp; The extended version was made after the jam, adding 21 levels and generally polishing up the experience.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzIzNTY1NzMucG5n/original/ouUYKE.png]]
<p>SIGNAL//r021 is a two-player high-society mecha-pilot letter-writing game designed for people who want to build world-setting details and character backgrounds as they play. It is designed to be supplemental to other systems that have a similar enough tone, and has <a href="https://hexavexagon.itch.io/signal-seed">a system reference document</a> for designers who want to make it fit systems with different tones. It also produces tarot cards that are specific to the relationship between the characters which can then be used as cards in a tarot-based system. Lastly, it provides a good framework for people to practice their communication skills! I thought about communication a lot while writing the SIGNAL system, and it's heavily influenced by the dynamics of how good communication works IRL. I hope it can be of some help to people who either struggle with communication, or don't realise their own weaknesses with it.<br></p>
<p>Acknowledgements go out to <a href="https://loottheroom.itch.io/wretched">The Wretched</a> by <a href="https://twitter.com/pangalactic" rel="nofollow noopener">Chris Bissette</a>, and <a href="https://storybrewers.itch.io/good-society-pdf-including-deck-of-connections">Good Society</a> by <a href="https://twitter.com/storybrewers" rel="nofollow noopener">Hayley G</a> (particularly the AP on <a href="http://oneshotpodcast.com/one-shot/295-the-good-society-part-1/" rel="nofollow noopener">OneShotRPG</a>), for a lot of inspiration.<br><br>Example of Play (available to read in its entirety in the screenshots, in case you don't want to buy the whole game) made in collaboration with <a href="https://twitter.com/evaliisasepp" rel="nofollow noopener">Eva Liisa Sepp</a>.<br></p>
<p>---<br></p>
<p>Pricing note: This hobby game is paywalled at $10, with a suggested price of $15.</p>
<p>Update note: new version underway. Might not add stock photos as originally planned, because it's a lot of additional layout work, but I'll see how it goes. Addition of quotes and slight adjustment in rules pending. No idea what I'll do for extra spreads, but I'll figure something out. No work beyond this will be prioritized on this project. It's incredible and I love it, but I need to get other games up to this level.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzQ0ODc0MTEucG5n/original/WJ9h80.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzQ0ODc0MTIucG5n/original/CTJ1xM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDUuanBn/original/Dk9ehl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDcuanBn/original/DOWlQD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDkuanBn/original/acSSi%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTAuanBn/original/AnF%2BVr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTEuanBn/original/m9ga3l.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTIuanBn/original/hyr6v7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTMuanBn/original/wKdXcf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTUuanBn/original/iItwgp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTYuanBn/original/BagzI5.jpg]]
<p>Get the official soundtrack <a href="https://echodog-games.itch.io/signs-of-the-sojourner-official-soundtrack" target="_blank">here</a>!</p>
<p>Signs of the Sojourner is a narrative deck-building game about connecting and communicating with others. It breaks away from typical card-battlers by instead challenging you to understand different perspectives and navigate social situations.</p>
<p>Your deck is your character, shaped by your experiences and relationships. Different decks will lead to different narrative paths as your cards impact your ability to communicate with various characters. Rather than building the most "powerful" deck, you will have to make decisions about who you want to be in this world and how you relate to others.<br></p>
<p>Set in a near-future earth-like world, you take over your mother's store after her death, traveling to diverse locations in order to acquire goods for the shop.&nbsp;This is a world where communities are more insulated, where travel is difficult, and where climate change has made life hard, but you'll still encounter optimistic stories, compassionate characters, and delightful surprises.</p>
<p><strong>Where To&nbsp;Find Us</strong></p>
<p><a href="https://discord.gg/echodoggames" target="_blank" rel="nofollow noopener">Echodog Games Discord server</a><br></p>
<p><a href="http://www.echodoggames.com/" target="_blank" rel="nofollow noopener">Echodog Games website</a><br></p>
<p><a href="https://twitter.com/EchodogGames" target="_blank" rel="nofollow noopener">@EchodogGames on Twitter</a><br></p>
<p><a href="https://store.steampowered.com/app/1058690/Signs_of_the_Sojourner/" target="_blank" rel="nofollow noopener">Signs of the Sojourner on Steam</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/JR-yGRKr-J8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzQucG5n/original/Nc%2FLf0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzIuZ2lm/original/osoSuK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzUucG5n/original/Io%2Fvyc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzMucG5n/original/cPCoTF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzkucG5n/original/Hc4rKy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzI0ODgyMDkucG5n/original/2WO1N4.png]]
<p>The makers of Manufactoria return with a new open-ended puzzle game.</p>
<ul><li>Build complex electronics from a variety of simple components, like Adders, Latches and Multiplexers.</li><li>Travel back to the 60s to Silicon Valley's very first startup, and do your best to keep the whole thing from imploding.</li><li>Solve more than seventy puzzles, from straightforward introductions to building fully functional CPUs.</li><li>Original soundtrack by Craig Barnes, composer for Streets of Rogue and Enyo.</li></ul>
<p>"The best game about CPU design that I can imagine" -- Zach Barth (SpaceChem, TIS-100).<br></p>
<p>Follow development on <a href="https://twitter.com/pleasingfungus" rel="nofollow noopener">Twitter</a>, <a href="http://pleasing.tumblr.com/" rel="nofollow noopener">Tumblr</a>, and <a href="https://www.facebook.com/pleasingfungus/" rel="nofollow noopener">Facebook</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DDNywILJMGg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1OS5naWY=/original/fEe2sr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1Ny5naWY=/original/YPHlFH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1NC5wbmc=/original/DblZEC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzcyNzM1MC5wbmc=/original/o0IqST.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzcxMDQ2Mi5wbmc=/original/r6ETWg.png]]
<p><br></p>
<p class="custom-video"><iframe width="640" height="360" src="https://www.youtube.com/embed/eaC1JXOROFw" frameborder="0" allowfullscreen="" style="color: inherit"></iframe></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc2NTg0OS5wbmc=/original/Fgp%2Ftx.png" loading="lazy"></p>
<p><strong>Silver Grapple is a fast paced 2D platformer that lets you swing through the air at the speed of sound</strong><strong>!</strong> Explore an expansive underground laboratory, buried and abandoned years after the mysterious accident that shut it down. Save whoever you can in your quest to escape, rocketing through the ruins with your <strong>Silver Grappling Hook</strong>!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc2NTgzNS5wbmc=/original/5RW5MM.png" loading="lazy"><br></p>
<ul><li>The smoothest grappling hook you'll ever swing on!</li><li>Fast paced challenges that'll leave you leaning into the controls.</li><li>An expansive world with 11 environments to explore, from abandoned offices and excavation sites to the quarantined depths of the strange laboratory.</li><li>An original soundtrack straight from the heart of retro consoles, featuring the work of Tom Campbell!&nbsp;</li><li>A rich story hidden amongst secret journals and old computers.</li><li>Skate on water and run like the wind as you scavenge new powers from the facilities ruins!</li><li>Throw your weight around as you master the physics of the Silver Grappling Hook!</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/eaC1JXOROFw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMy5naWY=/original/XibQqL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc5NzY2Ni5naWY=/original/dERwuR.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODczNC5naWY=/original/ANYw03.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODcyMy5wbmc=/original/s5%2FHyU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMS5wbmc=/original/ChbqEh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMi5wbmc=/original/tM3%2Fm6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc5OTA4OC5naWY=/original/pr6vAg.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMC5wbmc=/original/UJWw1b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODczNS5naWY=/original/WQbYrM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODcyMC5wbmc=/original/1wWOWR.png]]
<p>A simple and easy tool to localize your projects to any language you want, with just a couple of clicks you can configure your objects.</p>
<p>Create or edit your language files with the built-in file editor tool, compatible with JSON, STRINGS, and CSV formats files.<br></p>
<p>The tool components do all the work for you, no coding required* to localize your objects, support TMPro Text, UI Buttons, UI Image, and custom components.<br></p>
<p>Have custom events to trigger automatically any method you want as soon as the object is enabled, with a specific option for language selection.<br></p>
<p>Manage the tool with the Editor Tool window, giving you access to anything you will need, including debugging info.<br></p>
<p>Tested in Unity 2019 and above<br></p>
<p>You can find the tool in the Unity Assets Store too if you want&nbsp;<a href="http://u3d.as/2q3B" target="_blank" rel="nofollow noopener">http://u3d.as/2q3B</a></p>
<p>Documentation:&nbsp;<a href="https://drive.google.com/file/d/18_QHPpsuyUD7RZJt6KMytWGzHUN6GnbT/view?usp=sharing" target="_blank" rel="nofollow noopener">LocalizationTool Documentation</a><br></p>
<p><br></p>
<p>If you are a student and want to use the tool for your projects please contact me at via email through your&nbsp;student email asking for it</p>
<p><br></p>
<p>-Multiple format support (JSON, STRINGS, CSV)<br>-Built-in file editor<br>-No coding required*.<br>-Manage everything with the editor tool window.<br>-Supports custom text and dialog system</p>
<p><em>*In case you incorporate it with a custom system, you will need to implement a method to communicate the tool with the system.</em></p>
<p><em>This tool is meant to be used from the start of the project, however, it can be implemented without any issue, just keep in mind that some changes to your previous system may be needed.</em></p>
<p><span></span></p>
<p><br></p>
<p><span></span></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzYucG5n/original/Tuz0b9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzcucG5n/original/B%2Bz2D%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzkucG5n/original/BUr9R0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1NDAucG5n/original/UF32hT.png]]
<p>It's fantasy roleplaying, <em>the</em> fantasy roleplaying game stripped down to barebones and brass-tacks. Be anything you wish, without drowning in convoluted game mechanics and supporting a corporate behemoth.</p>
<ul><li>Broadly Compatible with most Fantasy d20 adventures.&nbsp;</li><li>Hits the basic notes of Fantasy Adventure Gaming&nbsp;<ul><li>but with a unique timbre.</li><li>and sans any unnecessary complication.</li></ul></li></ul>
<p>What's familiar:</p>
<ul><li>d20&nbsp;Based Combat</li><li>Ascending Armor Class</li><li>Roll under Stat Checks</li><li>&nbsp;The 3 basic Character Classes: Fighter, Thief, and Wizard</li></ul>
<p>What's new:</p>
<ul><li>Fighters create their own, unique "Special Moves"</li><li>Original Spells such as: Wretched Shriek,&nbsp;Sinking Sands, and Multitudinous Gambol.</li><li>Stat Check based Thief Skills.</li><li>Combat without Initiative.&nbsp;</li></ul>
<p>10 page, full color, hyperlinked .pdf</p>
<p><a href="https://violentmedia.itch.io/cave-of-the-feral-catgirls" target="_blank">And check out the first Dee En Dee&nbsp;sadventure, Cave of the Feral Catgirls!</a></p><p><br></p><p>HEY! if you're inspired to make and share content for Simple DeeEnDee, that's great!&nbsp;</p><p>Just follow these steps:</p><ol><li>Do NOT be a cop, republican, nazi, evangelical, or fascist of any stripe.</li><li>add a note saying the content is made by you, not me</li><li>include the official license tag "Oh fuck! This is Dee En Dee!! ACAB"</li><li>Give money to a poor trans person if you're able to.</li><li>Please let me know about it if you want.</li></ol>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzIuanBn/original/zFfQuN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzEuanBn/original/gC6Yll.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTI0NzUuanBn/original/Hggp1s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNjkuanBn/original/ZfmfQg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQ3MzIyNTcuanBn/original/AWERrp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzAuanBn/original/rxbpFA.jpg]]
<p class="text-center"><strong>Six Figures Under</strong></p>
<p class="text-center"><strong>or</strong></p>
<p class="text-center"><strong>You Went Through Ten Years Of Necromancy School And They Never Taught You How To Market Yourself.</strong></p>
<p><br></p>
<p>A series of 6 solo micro-games about being a freelance necromancer:</p>
<ol><li>False Life Advertising - Write a Craigslist ad</li><li>Dead Ringer - Record a message for your answering machine</li><li>A Day in the Life - Journal about a revivification job</li><li>Cheap as Dirt - Write a recipe</li><li>At Death’s Door - Journal about work following you home</li><li>Life Insurance - Write instructions for your own revivification</li></ol>
<p></p>
<p>Every $3 will add 1 community copy to the pool.</p>
<p>Submitted to the <a href="https://itch.io/jam/spring-from-the-graves-jam" target="_blank">Spring From the Graves Jam</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDYxLmpwZw==/original/IPqMew.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDcyLmpwZw==/original/aUVEMx.jpg]]
<p>Time trial racing on notepaper.</p><p>25 levels to race on, plus an editor to create more.</p><p>Wide open rally stages, tight street circuits, technical hairpins and fast sweepers.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDAzLnBuZw==/original/TAYyVp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA1LnBuZw==/original/kl6mFh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA0LnBuZw==/original/tJMXVH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA2LnBuZw==/original/HaY1Dd.png]]
<p>Have fun! Create Art! Art is great!</p>
<p><br></p>
<p>Controls:</p>
<p>Keyboard:</p>
<p>WASD &amp; Arrow Keys (2 player mode) to move around</p>
<p>Escape to quit</p>
<p>On the starting screen, press '1' for single player mode, '2' for two player mode</p>
<p>Once you'rt done, press 'S' to save all paintings from your previous session, 'D' deletes them</p>
<p><br></p>
<p>Gamepad (only XInput controllers are fully supported, DirectInput might lead to strangeness)</p>
<p>Analogue Stick/Dpad to move around. In two player mode, the right analogue stick of the first controller also controls the second player, while the one on the second controller (if plugged in) controls player one. Theoretically you can play the game with sharing just one controller...</p>
<p>On the starting screen 'A' (Xbox controller) activates single player mode, 'B' activates two player mode.</p>
<p>Once you'rt done, pressing 'A' saves your painting, while pressing 'B' deletes them.</p>
<p>Your paintings are saved in your [username]\appdata\local\Skuiggle folder.<br></p>
<p>Options:<br>press the following keys on your keyboard to toggle certain things on, or off:</p>
<p>Screenshake on/off: 'U'&nbsp;<br>Sound on/off: 'i'<br>music on/off: 'o'</p>
<p><br></p>
<p>Credits:</p>
<p>Programming, Design, Art: Eric Merz</p>
<p>Music &amp; Sound: <a href="http://elirainsberry.itch.io/">Eli Rainsberry</a></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AYQCJVGZNxI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwNDUxMDUuZ2lm/original/XszYiU.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTMucG5n/original/Vc6NGt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0ODcucG5n/original/tSxeo0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTAucG5n/original/DvJWhk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTEucG5n/original/61nGzy.png]]
<p>Sky Rogue is a fwooshy rogue-lite action flight simulator! Blow things up over land, sea, and air, on an infinite number of procedurally-generated islands. &nbsp;Choose one of a diverse set of aeros and kit it out with a dizzying array of weaponry. Go toe-to-toe with enemy aces or assault giant flying aircraft carriers, but watch out for volleys of missiles; when you die, you're dead.</p>
<p><a href="http://store.steampowered.com/app/381020/" rel="nofollow noopener"><img src="https://i.imgur.com/ZD2uTs2.png" loading="lazy"></a> <strong>Steam key included!</strong></p>
<p>
	<strong>If you buy the game here on itch.io, the team will see more of the money.</strong>
</p>
<p>
	<strong><a href="http://www.rockpapershotgun.com/2014/02/11/blue-sky-fragging-sky-rogue/" target="_blank" rel="nofollow noopener">Rock Paper Shotgun</a> says:</strong>
</p>
<p>
	<em>"...it's a sweet little arcade shooter. It's immediately welcoming and then tougher than you'd expect..."</em>
</p>
<p>
	<strong><a href="http://www.eurogamer.net/articles/2014-02-17-flight-of-the-kondor-sky-rogues-dogfighting-glory" target="_blank" rel="nofollow noopener">Eurogamer</a> says:</strong>
</p>
<p>
	<em>"Speed and fury and wide open space: sat inside a Kondor - or even better, parked just behind it as it loops and snarls - air combat doesn't get much better."</em>
</p>
<p>
	Talk with other players in the 
	<a href="http://www.reddit.com/r/skyrogue/" rel="nofollow noopener">official subreddit, /r/skyrogue</a>!
</p>
<p>
	Follow progress and bask in animated GIFs 
	<a href="http://skyroguegame.tumblr.com/" target="_blank" rel="nofollow noopener">on the devlog</a>!<span></span>
</p>
<p>
	Programming: Kenny Backus (@nihilocrat)
</p>
<p>
	Art: Charles Blanchard (@DelkoDuck)
</p>
<p>
	Music: Phonetic Hero (Otherworld Agency)</p>
<p>
	<strong>YOUTUBE / LET'S PLAY PEOPLE:</strong> Feel free to create, post, and monetize videos of Sky Rogue and any other game I make!
</p>
<p><strong>MODDERS:&nbsp;</strong>You can find the Steam Workshop Uploader here (scroll down to "Downloads":<br> <a href="https://github.com/nihilocrat/SteamWorkshopUploader" rel="nofollow noopener">https://github.com/nihilocrat/SteamWorkshopUploader</a><br></p>
<p>You can quickly preview your changes without having to constantly restart the game using this tool:<br><a href="https://www.dropbox.com/s/flcwocfp259dbh0/skyrogue_mod_previewer.zip?dl=0" rel="nofollow noopener">Sky Rogue Mod Previewer - Build 1</a><br></p><p>If you want to make "new"-style mods, creating asset bundles in the Unity engine, download the latest mod tool project files from its github page:<br></p>
<ul><li>Go to <a href="https://github.com/nihilocrat/SkyRogueModTool" rel="nofollow noopener">https://github.com/nihilocrat/SkyRogueModTool</a></li><li>Click "Clone or Download" then "Download ZIP"</li></ul>
<p>Bugs reports, can be sent to <strong>support@skyroguegame.com</strong>
</p>
<p>Questions, comments, etc. can be sent to <strong>contact@skyroguegame.com</strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/RGFPwx31O7o" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2MS5naWY=/original/mt55sP.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2Mi5naWY=/original/Wo%2Bjq0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2NS5naWY=/original/Z1x8AX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3LzY0MDA1LmdpZg==/original/SBi6Hi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2Ni5naWY=/original/YJdgI2.gif]]
<p><em>This work is based on the Slayers RPG (found at&nbsp;<a href="https://gilarpgs.com/" target="_blank" rel="nofollow noopener">gilarpgs.com</a>), product of Gila RPGs, developed and authored by Spencer Campbell, and licensed for use under the Creative&nbsp;</em><em>Commons Attribution 4.0 International license (<a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener">creativecommons.org/licenses/by/4.0/</a>).</em></p>
<p><strong>Slayers of the Strange&nbsp;</strong>introduces 3 new Hunts and 2 new Classes for use with&nbsp;<a href="https://gilarpgs.itch.io/slayers" target="_blank">Slayers</a>. A copy of that game is required to use these.&nbsp;
</p>
<p>The Classes are the <strong>Guerrilla </strong>&nbsp;and the&nbsp;<strong>Knight</strong>. The Hunts are&nbsp;<strong>Cavities Beneath</strong>, a mission about stopping smugglers in the warrens beneath the city, <strong>The Trouble With&nbsp;Termites,&nbsp;</strong>which pits Slayers in the midst of an ongoing dispute between two factions of enormous insects, and&nbsp;<strong>Guardian of the&nbsp;Omphalos, </strong>&nbsp;an action-packed adventure that culminates in an escape from a collapsing library as Slayers leap from bookshelf to enormous bookshelf.</p>
<p>The new&nbsp;<strong>classes</strong>:
</p>
<ul><li>The&nbsp;<strong>Guerrilla</strong>, a short-range fighter whose boomerangs come back... unless they hit, of course. They use a large pool of inaccurate d4s.
</li><li>The&nbsp;<strong>Knight</strong>, who serves as a tank, absorbing damage taunting targets as they shift between different combat stances.</li></ul>
<p>For each of the classes, a new<strong>&nbsp;Tactician&nbsp;Expert&nbsp;Advance</strong>&nbsp;has been added as well.</p>
<p>The new&nbsp;<strong>Hunts:</strong></p>
<p><strong>Cavities Beneath&nbsp;</strong>is a straightforward, 4-page hun that opens with Slayers hunting down a band of smugglers on behalf of a merchant. But there's a reason no one travels to the caverns beneath the City. That reason is because the caverns are well known to be infested with monsters, the kind that Don't Need Bothering on account of all the teeth. But the Slayers are about to learn that lesson firsthand...</p>
<p><strong>The Trouble With&nbsp;Termites&nbsp;</strong>is a 3-page hunt that offers something a little different. Rather than investigating a monster and beating it up, the Slayers are tossed into the middle of a business dispute. Only everyone else involved is an enormous insect. Can the Slayers bring peace to Bugtown?</p>
<p><strong>Guardian of the Omphalos&nbsp;</strong>is a 3-page hunt that closely mimics the structure of the Hunts you'd find in the Slayers book. The Slayers have a goal (tangential to monster hunting), and they need to get inside a forbidden place to accomplish that goal. Then the fun begins as that forbidden place (the center of an enormous library) begins to collapse. This adventure is an exercise in destructible set pieces, as Slayers knock over shelves to cross wide chasms and anger Librarians who just want to be left alone.</p>

[img width=500 [https://img.itch.zone/aW1nLzU2OTM2NzgucG5n/original/Z790XG.png]]
<p>Of the things that came with the arrival of an alien being, the weakest of all of them are the slimes.&nbsp;Nobody knows what exactly these things are, but, as weak as they are, nobody's succeeded in destroying one of the dungeons from which they spawn.</p>
<p>Julius Anderson, a modern day crusader, takes the job of eradicating one of these slime dens. Hired on to help him is, well, Julius refuses to learn his name, on account of him being "diseased" with magic, but he's a healer. Through teeth-clenched teamwork, can the duo reach the bottom floor and destroy the source of the slimes?</p>
<p><strong>Demo 2 released 10/20/19!<br>Released as of 3/28/20!</strong></p>
<p>-----------------</p>
<p><strong>Features:</strong></p>
<ul><li>Two party members that hate each other.</li><li>Several floors of turn-based RPG action.</li><li>Small side stories for every floor you eradicate.</li><li>Level ups that only bestow skills that you may be more tempted to use as you progress.</li></ul>
<p>This game is available on&nbsp;<a href="https://store.steampowered.com/app/1313490/Slimes/" target="_blank" rel="nofollow noopener">Steam</a>, but the itch.io version will always exist for people who are unable to pay. That said,&nbsp;I'd still appreciate it if you supported me.&nbsp;&nbsp;Paying $7 will entitle you to a bonus PDF, as well as a Steam key that I will e-mail to you!</p>
<p>---------------</p>
<p><strong>Credits:</strong></p>
<ul><li><strong>Music:</strong>&nbsp;Rrrrose/Soft and Furious</li><li><strong>Scripts: </strong>Yanfly, Zerbu,&nbsp;LoneWolf,&nbsp;Ixfuru, Hime,&nbsp;Craze</li><li><strong>Testers: </strong>John&nbsp;Thyer, Harry Petch</li><li><strong>Patreon Supporters:</strong> Alex,&nbsp;Caroline, Fang, hollowaytape, Julien, Alasdair, Rasen Bran,&nbsp;Sierra</li></ul>
<p>----------------</p>
<p><strong>Q:&nbsp;What are the differences between the demo and the finished game?</strong></p>
<p>A: I documented some of the changes <a href="https://scitydreamer.itch.io/slimes/devlog/122387/gameplay-changes-to-expect-in-final-version" target="_blank">here</a>. I'm mainly keeping the demo download of the game around as a comparison point to the final game.</p>
<p><strong>Q:&nbsp;Is this game&nbsp;free?</strong></p>
<p>A: Kinda! The game is free but you can get a commentary PDF if you pay me money.</p>
<p><strong>Q: Haha, I thought you were some socialist/communist, yet you want people to pay you?</strong></p>
<p>A: Don't make me reference the Matt Bors comic.</p>
<p><strong>Q: How does this relate to other works?</strong></p>
<p>A: It takes place in the Fishing Minigame universe, far before the events of those games.</p>
<p><strong>Q: Why is your art like this?</strong></p>
<p>A: (shrug)</p>
<p><strong>Q: Why only three to four hours? RPGs should be dozens of hours long!</strong></p>
<p>A: I’m going to kill you.</p>
<p><strong>Q: Will this be on Steam?</strong></p>
<p>A: Yes! In fact, if you pay enough for this game here for the commentary PDF, you are also entitled to a Steam key when the Steam version goes up!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/8mc6gvwO968" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzE3MzMxNjAucG5n/original/c45meR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzE3MzMxNjEucG5n/original/uCIkNf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjIucG5n/original/YHEgOR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjMucG5n/original/aBUoet.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjYucG5n/original/hwU9qm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NzAucG5n/original/lmBL%2BA.png]]
<p>Available for DOS and WINDOWS 95 PCs, it is the far future racing event of the 1990s! Race your Slip-craft through 16 exciting locations, from famous EARTH CITIES to the exotic distant dimensional rifts of FARFIELDS in this intense single player drifting speedfest!<br></p>
<p>This SHAREWARE title is available for free download, with the full game available for a modest fee!&nbsp;</p><p>Check out the soundtrack that comes with a DOS jukebox! <a href="https://martijnfrazer.bandcamp.com/album/slip-speed-original-soundtrack" rel="nofollow noopener">https://martijnfrazer.bandcamp.com/album/slip-speed-original-soundtrack</a>&nbsp;</p><p>Physical boxed version!<br></p><p><a href="https://www.bitmapsoft.co.uk/product/slipspeed-deluxe-collectors-edition-msdos/" rel="nofollow noopener">https://www.bitmapsoft.co.uk/product/slipspeed-deluxe-collectors-edition-msdos/</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xi1FdXQ-w_Q" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3MzMzNTEuZ2lm/original/elCo8V.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3ODQ1MjMucG5n/original/akVZX2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTUucG5n/original/DXTEWg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NjEucG5n/original/X9Hsg9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3ODQ1MjUucG5n/original/IG%2B0gf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTkucG5n/original/4E2Hfi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTgucG5n/original/7VdndI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTcucG5n/original/DIsR%2Fq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTYucG5n/original/TX4IrL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NjAucG5n/original/YARsas.png]]
<p>A road trip escaping the law.</p>
<p>A stellar search for intelligent life.</p>
<p>A sacred race in an ancient forest.</p>
<p>A cavalcade in the Wild West.</p>
<p>A dungeon crawl in search of treasures.</p>
<p>A marine exploration into the unknown.</p>
<p>An exotic journey to stop a strange cult.</p>
<p>A portrait of apocalyptic scavengers.</p>
<p><br></p>
<p>Eight nanogames tempered&nbsp;by the heat of the slow fire.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDIucG5n/original/H%2BEOlT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDQwODMucG5n/original/ZNS6fO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDQucG5n/original/mZEXLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMTQwNDMucG5n/original/YRucTI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDUucG5n/original/wAPKpD.png]]
<h2>THE GAME</h2>
<p><em><strong>Smoke, Fuel, &amp; Fire</strong></em> is a game you play with friends to create unique and exciting characters living in a community of diverse factions. It is a game built using the <em><a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, &amp; Bone</a></em> engine created by <a href="https://www.possibleworldsgames.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Tyler Crumrine</a>, but with new and unique twists.<br></p>
<p><a href="https://twitter.com/MadeleineEmber" target="_blank" rel="nofollow noopener">Madeleine Ember</a> has created a beautiful series of character portraits that provide a jumping off point for the people that exist in your group’s community. They’re evocative, diverse, and lovely.
</p>
<p>Playing <em>SF&amp;F</em> involves a game of turn based prompts, a standard deck of cards with the jokers <em>left in</em>, and two pages of beautifully crafted portraits.
</p>
<p>You’ll begin by <strong>creating factions</strong> and <strong>drawing a hand of cards.</strong> One person can play a card to claim a character, describing the ways they belong to the player’s faction with three sentences: <strong>smoke (how they’re recognized), fuel (what they do), and fire (why they do it)</strong>. After this, other players can <strong>bid cards from their own hand </strong>to tie their own factions to that same character.
</p>
<p>At the end of the game, you’ll have a host of characters being pulled in all directions from the most important factions in the community.
</p>
<p><em>SF&amp;F</em> also includes rules for creating these factions yourself, and these rules are universal and adaptable enough that you can take them to other games you play, including into <em>Beak, Feather, &amp; Bone.</em> With a playthrough of both games—in either order—you could fill out the map of a community <em>and </em>the people that exist within it.
</p>
<p>The game also includes a host of supplemental rules, letting you adapt your playstyle to whatever works best, including:
</p>
<ul><li>Solo play.
</li><li>Creating player characters for an RPG campaign&nbsp;and connecting them to the characters you’ve made.
</li><li>Random faction generation.
</li><li>Using different portraits, including ones you can’t color in.
</li></ul>
<h2>SUPPLEMENTARY MATERIAL</h2>
<p>You can quickly generate factions online!&nbsp;I’ve put the generation tables on perchance.org, making them easily accessible for use with <em>SF&amp;F</em> and other games. You can find them <a href="https://perchance.org/smoke-fuel-fire" target="_blank" rel="nofollow noopener">here</a>. As time goes on, more and more options will be added to the online version of the generators, further expanding the possibilities.
</p>
<p>If you’re looking to try different portraits, I’ve outlined some suggestions below. The following art&nbsp;was <em>not&nbsp;</em>made for <em>SF&amp;F</em>, and the artists are not affiliated with the game. These are pieces I like and I highly encourage you to check them out:
</p>
<p><a href="https://twitter.com/EvlynMoreau" target="_blank" rel="nofollow noopener">Evyln Moreau</a>’s <a href="https://www.patreon.com/evlynmoreau/" target="_blank" rel="nofollow noopener">patreon page</a> has a wealth of art, almost all of it in an enchanting black and white style that can easily be adapted to <em>Smoke, Fuel, &amp; Fire.</em>
</p>
<p>If you’d like to set your community in a bit of a weirder, grungier setting, <a href="http://thomas-novosel.com/" target="_blank" rel="nofollow noopener">Thomas Novosel</a> has two stunning portrait packs: <a href="https://thomasnovosel.itch.io/66-grungy-rpg-character-portraits" target="_blank">66 Grungy RPG Character Portraits</a> and <a href="https://thomasnovosel.itch.io/60-more-grunge-character-portraits" target="_blank">60 More Grunge Character Portraits</a>.
</p>
<p>You might be creating a community in a science-fiction setting, and for that you will find <a href="https://ashen-victor.itch.io/" target="_blank">Ashen Victor</a>’s <a href="https://ashen-victor.itch.io/sci-fi-character-portraits-poject" target="_blank">Sci-Fi Character Portraits Project</a> to be immensely helpful and perfectly suited to color in.&nbsp;
</p>
<h2>COMMUNITY COPIES</h2>
<p>I believe that everyone who wants to play <em>SF&amp;F</em> should be able to do so. If there’s any reason you can’t afford the game at this time, please take one of the community copies provided. If you do, you can support the game by rating it here, telling others about it, or just playing it with your game group. Each time someone purchases the game, I’ll add another copy to the pool.
</p>
<p>If you’ve played <em>Smoke, Fuel, &amp; Fire,</em> I’d love to hear from you! You can reach out in the comments, or find me on Twitter: <a href="https://twitter.com/eldritchmouse" target="_blank" rel="nofollow noopener">@eldritchmouse</a>. I hope you enjoy the game and create many fascinating characters and communities with it.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81OTA4NDM1LmpwZw==/original/ZW3YHd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2MzcyLmpwZw==/original/LT9Tm3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2MzczLmpwZw==/original/nZt2jt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2Mzc0LmpwZw==/original/Lj%2BhS5.jpg]]
<p>(Oct-10-2019) - UPDATE 1.0.0.1:</p>
<ul><li>Dramatically decreased popping volume of small blue score balloons</li><li>Regressed control time bug in which players could regain time faster by repetitively pushing the left stick in any direction over and over.</li><li>Added additional details and names to the credits text document file.</li></ul>
<h1 class="text-center">Summary:</h1>
<p class="text-justify text-center">No control? No worries!</p>
<p>Ride inside one of 50 inflatable tubes that stick and ride together as one on contact all the way to the bottom of one tall mountain through multiple winding routes and areas!&nbsp;Pop as many balloons as possible to gain the most points as you race to the bottom! Playable with&nbsp;up to four players via local splitscreen, Snowdown boasts a casual pick-up-and-play focus with a low barrier to entry!</p>
<p class="text-center">Remember: the only way is down!&nbsp;</p>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</del></p>
<h3 class="text-center">Instructions:</h3>
<p>Players each have a yellow Control Timer on their screen that slowly replenishes by itself when they aren't moving around. The higher the timer gets, the more control they can exert over their inflatable tube. However, when they start to move around, the timer will start to tick down to zero at which point they won't be able to move at all for a certain amount of time.</p>
<p class="text-justify">Riding through a Time Gate will grant more control time back for players who are able to reach it ahead of others and riding through yellow Hazard Rings will set a trap in one of the 36 different zones for other tubes currently riding through it! Players then get to watch the event play out in real time on a giant screen as the trapped tubes are scrambled in the chaos!</p>
<p class="text-justify">Inspired by rollercoaster action chase films, classic arcade titles of the 1990s and modern Battle Royale games, Snowdown is designed to exhibit a more "chilled-out" approach to traditional concepts of game flow, complimenting an idle brand of party atmosphere, allowing players the freedom to step back and let a session play out by itself and return later on or even let someone else take over if they so choose.</p>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</del><br></p>
<p class="text-justify">So hop in and crash, bash and slide your way into the biggest racing mosh ten thousand feet above! Hold on tight...now let go!</p>
<p class="text-justify">If you encounter any issues, feel free to leave any suggestions or feedback with a comment. Feel free to also get in touch via the Twitter handle @BonsaiTreehouse where you can catch up on general game devlopment news and all the goings on in the world!</p>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</del><br></p>
<h1 class="text-center">CONTROLS:</h1>
<h3 class="text-center">Gamepad In-Game:</h3>
<ul><li>Left Option = PAUSE</li><li>Left Stick = STEER</li><li>D-Pad = LOOK AROUND</li></ul>
<h3 class="text-center">Keyboard In-Game:</h3>
<ul><li>P = PAUSE</li><li>A = STEER LEFT</li><li>Q&nbsp;= LOOK LEFT</li><li>D = STEER RIGHT</li><li>E = LOOK RIGHT</li><li>W = LOOK UP</li><li>S = LOOK BEHIND</li></ul>
<h3 class="text-center">Keyboard In-Menus:</h3>
<ul><li>Arrow Keys: Toggle UI Buttons</li><li>Space Bar/Enter: Confirm Selection</li></ul>
<h3 class="text-center">Gamepad In-Menus:</h3>
<ul><li>D-Pad/ Left Stick: Toggle UI Buttons</li><li>Lower Face Button: Confirm Selection</li></ul>
<p class="text-center"><del>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</del><br></p>
<p class="text-center">Snowdown uses Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere. Unreal® Engine, Copyright 1998 – 2019, Epic Games, Inc. All rights reserved.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7PFTxU3g0Uc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzcucG5n/original/N0a1wj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTguanBn/original/7kRBYZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDEucG5n/original/huifVm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTIucG5n/original/h9gUYF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NjAuanBn/original/Ls9EW0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDAucG5n/original/W6hYlC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDYucG5n/original/zbv4qY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDgucG5n/original/ULjjDZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTYuanBn/original/Oz9NGh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDcucG5n/original/b3HLv%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDUucG5n/original/8rwUWr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NjEuanBn/original/3gPo4x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDIucG5n/original/HLM9oO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDMucG5n/original/bMaFw4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTUuanBn/original/d%2BOpL9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzkucG5n/original/F95VyQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTMucG5n/original/dDh%2Fbn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTEucG5n/original/rK9CvU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTcuanBn/original/uBmL2J.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDQucG5n/original/QGuWci.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDkucG5n/original/%2FoM9At.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTkuanBn/original/wKyFPq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzgucG5n/original/BOV8v4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTAucG5n/original/fJ3hQH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTQucG5n/original/jE%2BXQ3.png]]
<p>a game for the <a href="https://itch.io/jam/carta-jam">carta jam</a>, featuring the <a href="https://peachgardengames.itch.io/carta-srd">carta srd</a> by <a href="https://peachgardengames.itch.io">peach garden games</a>. i was several days too late to submit lol<br></p>
<p>requires any die, a 52-deck of cards, a token, and place to tally. (or you can just read the story text without these materials, i guess!)<br></p>
<p><br></p>
<p>soft_bwprint.pdf is for printing on US letter-sized paper.</p>
<p>soft_screen.pdf is for using with your screen. it has colour and a gallery of images! (recommended)<br></p>
<p><br></p>
<p>PAYMENT:</p>
<p>i am personally uncomfortable with payment for my work, but Peach Garden Games encourages it. here are options I am comfortable with:</p>
<p>1. pay it forward. donate to charity. do something nice. something along those lines. but don't brag about it to anybody, not even me.<br></p><p>2. if you're part of this Carta Jam, a barter works for me. i will also accept solo ttrpgs not included in the&nbsp;<a href="https://itch.io/b/770/solo-but-not-alone">Solo But Not Alone</a> bundle&nbsp;(I already have it), but just know i'm prioritising the games in the bundle <a href="https://oliverblueberry.neocities.org/quest/about.html" rel="nofollow noopener">and writing about them</a>.</p>
<p>3. something from my <a href="https://bandcamp.com/lickcakes/wishlist" rel="nofollow noopener">bandcamp wishlist</a>.&nbsp; this way you are paying an artist who is comfortable accepting money, plus the bonus that i will think of you everytime i listen to that album. <a href="https://itch.io/c/120299/witchlist">my itch.io wishlist</a> is okay too, but i usually only play games once.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzU5NjU2OTIucG5n/original/uxq3A4.png]]

<p><a href="http://www.sokobond.com/" rel="nofollow noopener">www.sokobond.com</a></p>
<p>
	Sokobond is an elegantly designed puzzle game about chemistry. It's logical, minimalist, and beautiful - crafted with love and science.
</p>
<ul>
	<li>Over 100 levels of molecule making mind-benders </li>
	<li>Featuring a gorgeous original soundtrack by Allison Walker</li>
	<li>No chemistry knowledge required</li>
</ul>
<p>
	Awards:
</p>
<ul>
	<li>PAX10 2013 - Finalist</li>
	<li>IndieCade 2013 - Finalist</li>
</ul>
<p>
	All purchases include a Steam key.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc5MDIucG5n/original/KftGLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc4OTcucG5n/original/sLTqcg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc5MDMucG5n/original/NH95%2BB.png]]
<p>Solace State is a 3D cyberpunk visual novel about a young hacker, Chloe, who comes to her political awakening as she seeks her friends in a biotech surveillance society. Your choices in intimate conversations, the kindling of relationships, and escalating tensions lead to multiple endings.</p>
<p><strong><em>Change the personal, revolutionize the political.</em></strong></p>
<ul><li>A dynamic storytelling experience where the camera “hacks” through architectural city environments to reveal key story information, written onto the 3D space<br>
</li><li>Fashionable, hand-painted characters and urbanscapes</li><li>Choices matter: Your negotiation prowess and manipulation of people's data influence how much freedom can foster in the East-Asian inspired metropolis, how you can retain your friends and even let a touch of romance bloom<br>
</li><li>A deeply emotional story that balances the future of diverse characters from all walks of life<br>
</li><li>A dynamic trip-hop and Kpop-inspired soundtrack that sets the edgy, youthful atmosphere<br>
</li></ul>
<p><strong>Minimum system requirements:&nbsp;</strong></p>
<ul><li>&nbsp;Windows 7</li><li>2.4 GHz Core 2 Duo</li><li>&nbsp;8 GB RAM</li><li>GeForce GTX 860M</li><li>2 GB available space</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/PwSM8DjzrWE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3NzMzLmdpZg==/original/EbggNz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3NzgwLmdpZg==/original/HGpPdG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3ODAxLmpwZw==/original/iEdVlf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3Nzk2LnBuZw==/original/3zGyqh.png]]

<p>
	a beautiful danmaku or bullet hell . In this challenging game go up against a barrage of enemy ships after finding your home world destroyed.
</p>
<p>
	-Fly your ship between thousands of enemy attacks in 8 beautiful levels
	<br>
	-Power ups allow more guns and faster shooting
	<br>
	-Shields to protect you from some of the worst attacks.
</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNDUvOTE4NzAuZ2lm/original/m4Ugt6.gif]]
<p>WELCOME COOL INDIE BUNDLE SUPPORTERS!</p>
<p><br></p>
<p>Slide on your tail, charge at robotic pumpkins, and collect every golden scarf as fast as you can in Sole Iron Tail!<br></p>
<p><strong>Features:</strong></p>
<ul><li>A cute, but challenging single-player adventure consisting of 5 tales featuring a cast of friendly characters and giant foes!</li></ul>
<ul><li>Charge, Slide, Surf, and Hover with various character and level mechanics!</li></ul>
<ul><li>Beat those times on the leaderboard through time-attack!</li></ul>
<p><br></p>
<p><strong>Story:</strong><br>As the last known Iron Tail (a creature with a large, metallic cup on the end of its tail), the evil Pumpkin Army is hunting for your species! There is a glimmer of hope though, as a mysterious stranger covered in gold scarves guides you throughout the Tundra. Using your special tail, can you slide and charge fast enough to see the end of the Golden Stranger’s trail, all the while defeating the evil robots of the Pumpkin Army, as well as the mind-controlled animals who may be more innocent, and special, than they first appear to be?</p>
<p><br></p>
<p>The game is still in development, with a planned release of <del>Spring</del>&nbsp;Summer 2021.<br></p>
<p><a href="https://drive.google.com/drive/folders/1XdKDM_FvUXlvq_QjuD0qCNLrRPZNQhIy?usp=sharing" rel="nofollow noopener">PRESS KIT</a>
</p>
<p><strong><a href="https://store.steampowered.com/app/1252190/Sole_Iron_Tail/" rel="nofollow noopener">WISHLIST + TRY DEMO ON STEAM!</a></strong>
</p>
<p><a href="https://discord.gg/ZAtbubv" rel="nofollow noopener">DISCORD TOO!</a>
</p>
<p>Follow on twitter!&nbsp;<a href="https://twitter.com/SoleIronTail" rel="nofollow noopener">https://twitter.com/SoleIronTail</a></p>
<p></p>
<figure><img src="https://img.itch.zone/aW1nLzI5OTg2NzgucG5n/original/vjiIM0.png" loading="lazy"><br></figure>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-FWeQgltxZA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTg2NzMucG5n/original/VfC38J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTIucG5n/original/lRvl77.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMjIucG5n/original/SoRc8e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTAucG5n/original/jpK%2Fef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMDkucG5n/original/UlpUSQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTQucG5n/original/6wSl29.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzM1NDI2MDMucG5n/original/GpPetz.png]]
<p><em>If you'd like a physical copy, send me an email (questions@solipstry.com)</em></p><p><strong>Origins</strong><br>Solipstry was originally created as an attempt to merge the best parts of D&amp;D 4e (tactical combat, meaningful choices, a reasonable number of skills) with the best parts of D&amp;D 3.5 (emphasis on roleplay, enough choices to matter, powerful abilities not restricted by class). Since then, it has shed its D&amp;D roots and become a system of its own (You can still see these influences in some areas).</p>
<p><strong>Mechanics<br></strong>Solipstry does not have classes. It is a skill-based game, where every time you succeed in using a skill, you get better at using it. Because you can pick which skills to emphasize, you can make your own "class" by combining different sets of skills. You also have abilities, which cost points. How many points you have total is determined by one attribute, while their regen rate per turn is governed by another. No more having to judiciously manage your most powerful spells for the day! <br></p>
<p>For those that want a little more control, the Luck attribute allows you to re-roll dice, avoid fail-by-one scenarios, or just add a little more oomph to your damage when the time really matters. <br></p>
<p>Our damage system uses multipliers to maintain consistent averages, while emphasizing interesting effects. On a normal roll of 3d8, you have the most chance of getting around 14 points of damage, while 3 and 24 would be outliers. In Solipstry, we inverted those odds, so you are more likely to get an extremely high or low result, rather than consistently average.</p>
<p><strong>Who is it for?<br></strong></p>
<p>Solipstry is simple enough for beginners to grasp, but complex enough for veterans to wet their hands and stay entertained. Our goal was to give DMs the freedom and flexibility to create whatever world they want to make and tell their own stories. Solipstry can be played in ANY setting. We have mechanics that are flexible enough, without bogging you down with supplements and point-buy tales. Try it out!&nbsp;</p>
<p>For more information, see our 2016 <a href="http://" target="_blank" rel="nofollow noopener">Kickstarter</a>.</p>
<p><br><strong>Chronicle<br></strong>The Chronicle is technically a collection of monsters, but it is <strong>in no way required to play. </strong>The Solipstry core book has everything you will ever need to play, including sample monsters and instructions on how to create your own. The Chronicle is mostly lore and descriptions about how you might bring various monsters to life in your own game world. It includes quotes from people who've fought bears, seen ghosts, and encountered stranger and more outlandish creatures, varying from Network Spikes seen while hacking, to reality-bending Errata, supervillains, and more.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzE5NzgxMjAucG5n/original/FpvDUV.png]]
<p><iframe src="https://www.youtube.com/embed/kkGLecbXX-w" allowfullscreen="" width="500" height="281" frameborder="0"></iframe><span></span><strong><br></strong></p>
<p><strong>Being a shepherd is my escapist fantasy. </strong>I don't really want to be a shepherd, I know it's no easy job. But there are some moments where I just want to leave making computer games behind. Do real work with my hands. SOLITUNE is about these moments. Being not yourself. Wanting to leave.
</p>
<p>
	Move from space to space and help out the others.
</p>
<p>
	Every room has a unique song by 
	<strong><a href="https://ludwig-hanisch.de" rel="nofollow noopener">Ludwig Hanisch</a></strong>!
</p>
<hr>
<p>
	<em><strong>"They show me something weird and/or surprising I'd not seen before.</strong></em><em><strong> It's awful pretty too.<span></span>" ~ by <a href="https://www.rockpapershotgun.com/2016/11/22/solitude-released/" rel="nofollow noopener">Alice O'Connor on RPS<br>
	</a></strong></em>
</p>
<p>
	<strong><em>"With any luck, either Reinhardt or someone who plays her game, can turn that fantasy into a reality." ~ by <a href="https://killscreen.com/articles/solitude-wants-help-escape-hell-media/" rel="nofollow noopener">Chris Priestman on Killscreen<br>
	</a></em></strong>
</p>
<p>
	<em><strong>"All of this is delightfully strange." ~ by <a href="http://indiegames.com/2016/11/solitude.html" rel="nofollow noopener">Thomas Faust on indiegames.com</a></strong></em>
</p>
<p>
	<em><strong>"I bloody love the look of it." ~ by <a href="http://www.pcgamer.com/solitude-an-isometric-curio-about-escapism-and-shepherding/" rel="nofollow noopener">Tom Sykes on PCGamer.com</a>
	</strong></em>
</p>
<hr>
<p>
	Find the blog with all my inspirations and WIP pictures 
	<strong><a href="http://solitudegame.tumblr.com/" target="_blank" rel="nofollow noopener">here</a></strong>. If you want to know anything about why we created a shepherd game, <a href="http://ratking.de/blog/2016/11/22/solitude/" rel="nofollow noopener">read this post</a>.<br>
	
</p>
<p>
	<strong>Design and idea: <a href="https://twitter.com/RottenHedgehog" target="_blank" rel="nofollow noopener">@RottenHedgehog</a><br>
	Programming: 
	<a href="https://twitter.com/ratkingslair" target="_blank" rel="nofollow noopener">@RatKingsLair</a></strong><br><strong>Portuguese translation: </strong>Mariana Martins<strong><a href="https://twitter.com/ratkingslair" target="_blank" rel="nofollow noopener"><br>
	</a></strong>
</p>
<hr>
<p>
	<em>The game is around 20-30 minutes long. If you liked SOLITUNE, you might be also interested in <a href="https://ratking.itch.io/wood-for-the-trees">Wood for the Trees</a> (free)!</em><br>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/kkGLecbXX-w" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM4LmpwZw==/original/vjxFsM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM3LmpwZw==/original/Fz9UVd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM0LmpwZw==/original/XR84vc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM2LmpwZw==/original/QBoiQr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM1LmpwZw==/original/Kyu%2Bck.jpg]]
<h2>Story</h2>
<p><strong>Lyra</strong>, a gun-witch living at the border, a place marked by destruction and supernatural phenomenons, is tasked to take a duo of magical girls across the land to try and save the world.<br>All the while, she gets to know them, becomes friends with them, and maybe, just maybe see that there's more to life.</p>
<h2>Characters</h2>
<p><img src="https://img.itch.zone/aW1nLzU1OTUzNzIucG5n/original/qtLv%2Fy.png" loading="lazy"></p>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODMucG5n/original/tgfToU.png" loading="lazy"></h2>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODQucG5n/original/1uPTqo.png" loading="lazy"></h2>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODcucG5n/original/LxbOQ%2F.png" loading="lazy"></h2>
<h2>Credits</h2>
<p><strong>Art</strong>:&nbsp;<a href="https://akua.carrd.co/" target="_blank" rel="nofollow noopener">Akua</a><br><strong>UI</strong>:&nbsp;<a href="https://twitter.com/khailzs" target="_blank" rel="nofollow noopener">Khailz</a><br><strong>Writing</strong>:&nbsp;<a href="https://tangledvirus.itch.io/" target="_blank">TangledVirus</a><br><strong>Backgrounds</strong>: Some from <em>Pexels</em> and others from&nbsp;<a href="https://spacetwinks.itch.io/" target="_blank"><em>Spacetwinks</em></a> photography collections, <em>A Place Without Bodies vol.1 and 2</em>.<br><br><em>Special thanks to Ranceko and Jams.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1NjMucG5n/original/0uVyBU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1ODgucG5n/original/%2BLr3P4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1OTgucG5n/original/DjhAsC.png]]
<p>You know how dating sims usually have an eccentric friend characters who help you progress through the game?</p>
<p>This is a game where you play as one.&nbsp;</p>
<p><em>Songs and Flowers&nbsp;</em>is a lighthearted, fun story about befriending people and learning about them as you get closer.</p>
<p>The two love interests are:</p>
<figure><img src="https://img.itch.zone/aW1nLzI4Njc0MzQucG5n/original/Gq4o8U.png" style="max-width: 100%" loading="lazy">
</figure>
<figure><img src="https://img.itch.zone/aW1nLzI4Njc0NDEucG5n/original/ueDsg6.png" style="max-width: 100%" loading="lazy"></figure>
<p>Features</p>
<ul><li>Befriend and maybe date either an angelically-innocent cutie or a teasing, flirting devil</li><li>Two routes with two endings each</li><li>Unique backgrounds and sprites</li><li>Music from&nbsp;<a href="http://bensound.com/" target="_blank" rel="nofollow noopener">Bensound.com</a></li><li>Main character has a sprite for evil laughter</li><li>40,000-ish words</li><li>9 bonus stories and 14 profiles</li><li>Developer's notes</li><li>It's free</li><li>Castillian&nbsp;Spanish translation made by the amazing&nbsp;S. Saorín!</li></ul>
<p>The game is 100% complete and published!</p>
<p><strong>WARNING: </strong>This game contains swearing, depictions of depression and anxiety (with happy endings!), and discussions of&nbsp;losing a loved one.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5ODgucG5n/original/qzXX8H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5ODkucG5n/original/0Pd%2F4k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTIucG5n/original/NftvlR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTQucG5n/original/ibhgoD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTUucG5n/original/%2BNbd0o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTYucG5n/original/fVO1Rr.png]]
<p></p>
<p>Sophie's Cubes is an application that lets you create, scramble, and solve puzzle/magic cubes.</p>
<p>Features:</p>
<ul><li>Play with cubes from 2x2x2 all the way up to 30x30x30</li><li>Cubes are highly customisable; choose face colours, images, and style your cube with variable parts, stickers, and shapes</li><li>For an extra challenge, play with picture/super cubes - where the goal is to return every face to its original orientation and position</li><li>Sessions are saved between use, so if you're challenging yourself to a puzzle that is taking you a while, you can close the app and come back to it later</li><li>Try to beat your best solve times with an automatic timer that starts whenever you scramble the cube - with adjustable inspection time</li><li>Fully rebindable inputs allow you to set up controls for every kind of turn you might want to make</li><li>Specify up to 10 algorithms that can be executed immediately as a macro</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2G8FvbU1qhE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMxMDAucG5n/original/phZdVX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTcucG5n/original/aLN2MS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTUucG5n/original/SQk1ap.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTYucG5n/original/zon1Yd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTkucG5n/original/OHhY0A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTgucG5n/original/H49ypZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMxMDEucG5n/original/56vKr2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTQucG5n/original/uZFxIL.png]]
<p>Sophie's Dice is a dice roller application that lets you roll many kinds of virtual dice, and make custom dice suited for almost any game.<br></p>
<p>Features:</p>
<ul><li>Select dice from your collection, or enter dice expressions using standard dice notation</li><li>Support for many roll behaviours such as keeping or dropping highest/lowest X dice, explosion, dice pool counting, <a href="http://sophiehoulden.com/dice/documentation/notation.html" target="_blank" rel="nofollow noopener">and more</a></li><li>Save roll expressions you frequently use, to re-roll them easily</li><li>Includes dice used for most table-top RPGs*</li><li>Easily edit dice to make them your own</li><li>Includes many pre-made dice, over 300 rollable dice shapes, and lots of images/sound effects for all kinds of custom dice</li><li>Display your own images on dice faces, and your own sound effects for when they come up**</li><li>Dice are saved as .xml files you can share with other people who have Sophie's Dice**</li><li>Input stats from your character sheet to use in roll expressions</li></ul>
<p><br></p>
<p>* d20 system (DnD), Fudge/Fate, Narrative system (Star Wars, Genesys), Storytelling (Vampire), Lancer. If your RPG needs some other kind of dice, you can make them pretty easily :)</p>
<p>* *On android, these features require you to copy files to/from a Custom Dice folder yourself.</p>
<p>Documentation for Sophie's Dice can be found <a href="http://sophiehoulden.com/dice/documentation/" target="_blank" rel="nofollow noopener"></a><a href="https://sophiehoulden.com/dice/documentation/" target="_blank" rel="nofollow noopener">here</a>.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OWXA8ObIPH0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0NzguanBn/original/Azb87B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0NzkuanBn/original/KFhYlK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODEuanBn/original/Dp2F%2Fd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODMuanBn/original/fAcELM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODAuanBn/original/fKuFCZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODQuanBn/original/8x1AVJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODYuanBn/original/zW7py7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODIuanBn/original/HWWCn8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODcuanBn/original/N5IddL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0ODUuanBn/original/tyIHD8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzQzNzc0OTIuanBn/original/dn%2BEYQ.jpg]]
<p>Soul Searching is a narrative survival game about sailing away from your homeland.<br></p>
<p>You sail on your small primitive boat to a world of islands, dragons, and magic. You can learn about stories of people living on islands you chose to visit, discover dragons, catch fish, customize your boats, find ghosts, cast magic spells, and more.</p>
<p>Soul Searching leaves you in an open world without any tutorialization except telling you the buttons to play. There is not one correct path. There are a number of play styles you can choose, depending on your hunger for gold and better boats. You might get lost, but it won't take too long to find your way to the end.</p>
<p>Soul Searching is about growing up, leaving your homeland, standing on your own feet. It deals with themes like isolation, searching for meaning and direction, leading to depression and suicidal thoughts.</p>
<p>As the player, you are not a violent hero. The most violent thing you can do in this game is to catch fish to feed yourself. Other than that, it's a game of humble survival and peaceful travels. But in that humbleness you are challenged to survive in a world of merciless dragons and endless seas.</p>
<p>Made by a one man team spanning 3 years of development, Soul Searching is a very personal game. It tries exciting story-telling methods to convey feelings rarely conveyed in games. Since all code, art, music, everything is made by one person, it offers a special sense of authorship hard to find in other games.</p>
<p>Other than the single player story mode, game also offers a randomly generated mode from 1 to 4 local players. This offers replay value and requires players to work together to survive. More players, more need for resources, so more challenge, but more skills to survive.</p>
<p>Soul Searching invites you to its world of mysteries. Even though the main story play time is not that long, if you want to unlock every achievement in the game, you will have to get lost in this world.</p>
<p><strong>Features:</strong></p>
<ul><li>Around 3 hours of single player story mode</li><li>Random mode from 1 to 4 players that randomly generates a map and requires players to work together to survive</li><li>Creatures at sea: dragons, killer whales, and more</li><li>Islands with lots of monologues, and other islands that are not populated by humans</li><li>Magic skills that let you survive on sea more easily</li><li>Player appearance customization (including gender and sexual interest customization)</li><li>Day night cycle that affects gameplay in subtle ways</li><li>Extensive soundtrack</li><li>English and Turkish language support</li><li>Supporting selectable control schemes: 4 players on Xbox gamepads, 2 players on keyboard, 1 player on mouse</li></ul>
<p>UPDATE: Soul Searching Short Stories is OUT NOW! It is a new free update to Soul Searching that adds 7 new games to enrich the lore of Soul Searching.&nbsp;<a href="https://youtu.be/xuDqByntWT0" target="_blank" rel="nofollow noopener">Trailer is here</a>.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/q_mckYArq1Q" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwMy5wbmc=/original/t%2F1u8A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNC5wbmc=/original/8m7O3J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwOC5wbmc=/original/9qlbv3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNi5wbmc=/original/V7pFUo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMS5wbmc=/original/1ig7sg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMi5wbmc=/original/45NKKT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNy5wbmc=/original/rqwY%2Fd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNS5wbmc=/original/P3kjhL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMy5wbmc=/original/qj4gDN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwOS5wbmc=/original/AzSnYd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNi5wbmc=/original/MDZeEQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNC5wbmc=/original/DK8ZxK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMC5wbmc=/original/FE6RdE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNS5wbmc=/original/Uu%2FrTU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNC5qcGc=/original/eiQ9LM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDM0NS5qcGc=/original/nDX4Rj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNS5qcGc=/original/TLmfpt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIxMC5qcGc=/original/R4NlUr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNy5qcGc=/original/IaXSbw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwOC5qcGc=/original/uf%2BstK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwOS5qcGc=/original/9Jxj%2Fr.jpg]]
<p><strong>Soundodger+</strong> combines the twitchiness of bullet hell shooters with the sonic thrills of rhythm games to create a wholly unique experience. Studio Bean has updated the original Adult Swim Games title with all-new tracks, controller support, and a fully-featured level editor. Plus, auto-generate stages from your own music library!</p>
<ul><li>35 music tracks&nbsp;+ 3 free DLC packs included</li><li>Artists include celebrated game musicians Disasterpeace (FEZ, Runner2), Danny Baranowsky (The Binding of Isaac) and more</li><li>Auto-generate levels in a snap using your personal music collection</li><li>Create and share original levels using the level editor</li><li>Engage slo-mo for the trickiest sequences, or embark on a risk-free musical journey in Zen mode</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/61lu5JOtaGE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDUucG5n/original/RMVAPl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDgucG5n/original/IcZu4o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDQucG5n/original/eDYEda.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDYucG5n/original/bdVAJ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDMucG5n/original/BrcWYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDcucG5n/original/3UD8LK.png]]
<p>You gotta go into the Space Hole!<br></p><p><br>Monkey Ball meets Marble Madness in Spaceeeee!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bWxXSVIqRIQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE2LnBuZw==/original/Zqusmr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE5LnBuZw==/original/x%2Bgf5q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIwLnBuZw==/original/h0hXVi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE4LnBuZw==/original/oWLKeu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIzLnBuZw==/original/EmyAuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIxLnBuZw==/original/nkaThi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjI0LnBuZw==/original/iiIP20.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjI1LnBuZw==/original/r1EknZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIyLnBuZw==/original/ALt%2FXc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE3LnBuZw==/original/%2FOWj1L.png]]
<p><strong>Space Hole 2018&nbsp;</strong><br></p>
<p><br></p>
<p><br></p>
<p>Photosensitivity Warning: This game features many flashing lights and rapidly changing colors.<br>Space Hole 2018 is a psychedelic platformer starring a space shuttle exploring space...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-543f6f7cd93e.png?t=1567129566" loading="lazy"><br>Fly freely, or roll in the space ball. Some holes are for balls only...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-c3c6dd25e2d8.png?t=1567129566" loading="lazy"><br>Find Space Gems and upgrades in the exciting &amp; esoteric cosmos...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-9f8c57388049.png?t=1567129566" loading="lazy"><br>A game by Sam Atlas<br>Music by dl Salo<br>Courtesy of Object Sonore</p>

[img width=500 [https://img.itch.zone/aW1nLzM3MDUyMDkuanBn/original/Ev351%2B.jpg]]
<p>Photosensitivity Warning: This game features intense procedural visual effects. Space Hole 2020 features many unpredictable visual patterns, and strobing lights.<br></p>
<p>***Free demo available now***</p>
<p>Space Hole 2020 is a psychedelic platformer, paired with the Freeform Machine.&nbsp;<br></p>
<p>I am hoping to release Space Hole 2020 in 2020.</p>
<p>This Space Hole tracks the large-scale developments, commonly observed in many different systems,&nbsp;along an allegorical timeline.</p>
<p>You do this by navigating through the waves and particles overlapping mysterious cosmic&nbsp;structures.</p>
<p>Much of Space Hole 2020's visual effects are procedural, so hopefully each player will get a unique view of their computer's chaotic intent.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/_ZZVmQk7NmE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjguanBlZw==/original/OsmJhX.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjUuanBlZw==/original/UOs5yR.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjcuanBlZw==/original/kUr9WD.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjYuanBlZw==/original/18I%2Fm%2B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjQuanBlZw==/original/d05Uwo.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjMuanBlZw==/original/uNEDI%2F.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjIuanBlZw==/original/ScQ1K4.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjkuanBlZw==/original/Doaoqm.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjEuanBlZw==/original/MBEdzn.jpeg]]
<p>Need to generate a space station for a sci-fi themed table-top session? Station Architect does exactly that, by allowing you to generate a massive variety of space stations in an instant, or create your own from scratch. Anyone can use this tool easily.<br></p>
<p>Use the included presets, or delve into the various options to design your own specific station, or just choose the size and type and go. Edit generated station in the new Create mode to get it just right right, or build a station from scratch with the simple drag and drop interface.<br></p>
<p>When you've got the station you want, you can save it as a .png file and print it and hand it out to your players, or upload it for your Roll20 game.<br></p>
<p><strong>Features:</strong><br></p>
<ul><li>Generate mode:<ul><li>Basic, standard and advanced control modes</li></ul><ul><li>7 Station types</li></ul><ul><li>12 Presets included, or make your own and save them!</li><li>Input your own RNG seed</li></ul></li><li>Create Mode:<ul><li>Drag and drop rooms and corridors to create your station</li></ul><ul><li>Generate corridors on the fly or at the touch of a button, even draw them on!</li></ul><ul><li>Set room rotations to give your station variance</li><li>Save station for later editing</li></ul><ul><li>Undo/Redo</li></ul></li><li>German localisation for the user interface</li><li>20 Different room types</li><li>Fog of War with line of sight</li><li>4 different types of grid and coordinates system</li><li>5 tilesets to chose from</li><li>Room labels for ease of use</li><li>Coordinates system</li><li>Ability to save as a .png in multiple resolutions</li><li>Soundtrack by Cornelis Jordaan and @amywrdn</li></ul>
<hr>
<p><strong>DLC - All The Early Access Builds</strong><br></p>
<p>All the publicly released build from before Station Generator even <br>became a thing! These go back as far as my original project Quantum Wing<br> which has since been put on hiatus to complete Station Generator. </p>
<p>Early builds are just that, early builds. The package contains the 3 Betas <br>and 5 Alphas (With one hot fix) exactly as they were released within the<br> early access program. </p>
<p>What to expect:</p>
<ul><li> Bad graphics
</li><li> Lack of sound effects
</li><li> Terrible UI choices
</li><li> A look at the beginnings of a whole other game!
</li><li> See my progress as Station Generator goes from strength to strength
</li><li> Watch the graphics and sound improve over time</li></ul>
<p>This is a history of Station Generator's development, and it wasn't a perfect, or smooth road to get here!</p>
<hr>
<p>You can leave comments here for feedback, or email me at severalbytes ]at[ gmail ]dot[ com or contact me directly on twitter at <a target="_blank" href="https://twitter.com/ALWyvern/" rel="nofollow noopener">@ALWyvern</a> if that suits you better :)<br></p>
<p>For anyone interested my first game <a href="https://severalbytes.itch.io/willow">The Willow Effect</a> is available and is almost completely different!</p>
<hr>

<iframe width="720" height="450" src="https://www.youtube.com/embed/xygwgGIEqY8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDg5LnBuZw==/original/g4QiAx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvMTgyMzI2Ni5wbmc=/original/XM6ZBF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDg4LnBuZw==/original/4EAHVE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDk2LnBuZw==/original/6fYwZw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDk3LnBuZw==/original/1xMIxc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvMTgyMzI2My5wbmc=/original/ZCRyeL.png]]
<p class="text-center"><strong>DOWNLOAD:&nbsp;<br></strong><a href="https://play.google.com/store/apps/details?id=com.KarelJunek.SpaceEscapeObstacles" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwODEyODgucG5n/original/VFqL6n.png" loading="lazy"></a></p>
<p><br></p>
<p><strong>MORE INFO</strong><br></p>
<p>Space Escape Obstacles - BETA VERSION 2.1.1<br></p>
<p>Take a pick from the many skins available.Try to avoid the obstacles and conquer all the levels/worlds. Can you handle it? Test your skill.<br>*<br>Space - Be prepared for:<br>- Free skins and worlds<br>- Conquering all levels<br>- Losing your nerves<br>- Feeling of accomplishment after completing each level!<br>*<br>Escape - Key Features:<br>- Mobile Free to play game<br>- Nice low poly graphics<br>- Responding to feedback and regular updates<br>*<br>Obstacles - Info:<br>- Download today and enjoy a new adventure!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-6OnL4N2rf0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MTMzMDAwLnBuZw==/original/%2Fz0bjL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MTMzMDAyLnBuZw==/original/Un%2BtIB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MTMzMDAxLnBuZw==/original/51EhsT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2NjkzLnBuZw==/original/82DsWP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2NjkxLnBuZw==/original/r3RFXZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2Njk1LnBuZw==/original/RfsVgk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2Njk0LnBuZw==/original/pSkx%2F0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2NjkyLnBuZw==/original/QkQZNK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82MDY2Njk2LnBuZw==/original/sfPeYa.png]]
<p>SPARE is a short experimental game where the player may sacrifice different parts of themselves to proceed, each loss making progress a bit more difficult.</p>
<p>There are multiple ways to navigate these spaces, depending on what you've been willing to spare, and even a couple of extra endings tucked away for curious types.</p>
<h3>How much can you spare? How selfless can you be without losing yourself?</h3>
<p>More of my work (games and otherwise) can be seen at <a href="http://www,gildedgreen.com" rel="nofollow noopener"><strong>gildedgreen.com</strong></a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0Ni5wbmc=/original/VU6RzB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2ODIzNC5naWY=/original/snCK2W.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0Mi5wbmc=/original/U0fOgk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0NC5wbmc=/original/1zcdAJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0NS5wbmc=/original/oc0zOx.png]]
<p>
Spell Casting is a family friendly line drawing puzzle game in which you are a young wizard learning spells in the comfort of your home thanks to Wizardly Distance Education!</p>
<p>
	Practice casting spells by tracing out the patterns in the spell books using your mouse.  Earn a 3 star rating in each spell to unlock the exam.
</p>
<p>
	You'll need to remember the previously learned spell shapes to pass the exam and unlock new spell books!
	<br>
</p>
<p>
	Spell Casting supports Accessibility by allowing you to press and hold the SPACEBAR instead of clicking and holding the mouse button to draw spell lines.
</p>
<hr>
<p><br><strong>Quotes</strong><br></p>
<p>
	<em>"HARDCORE CAT WIZARDS LEARNING TO CAST SPELLS AND EPIC MEMES"</em> - Anonymoose
</p>
<p>
	<em>"If you're looking to play something together as a family, this is good stuff."</em> - Indiegames.com <a href="http://indiegames.com/2016/07/spell_casting.html" rel="nofollow noopener">http://indiegames.com/2016/07/spell_casting.html</a><a href="http://indiegames.com/2016/07/spell_casting.html" rel="nofollow noopener"></a>
</p>
<p>
	<em>"A great light-hearted puzzler that will test your memory and your dexterity."</em> - Alpha Beta Gamer <a href="http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/" rel="nofollow noopener">http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/</a><a href="http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/" rel="nofollow noopener"></a><br>
</p>
<p><em>"It's like playing a game designed by a classic children's storyteller.</em><em>"</em> - Highland Arrow <a href="https://www.highlandarrow.com/reviews/pc-reviews/371-spell-casting.html" rel="nofollow noopener">https://www.highlandarrow.com/reviews/pc-reviews/371-spell-casting.html</a><span></span></p>
<hr>
<p>
	<strong>
	Version History:</strong>
</p>
<ul>
	<li>2.0 release - 30 spells and 30 exams!</li>
	<li>2.1.0 update - new voice acting and fixed "mend"</li><li>2.2.0 Halloween Update - 6 new spells and 6 new exams!</li><li>2.3.0 Christmas Update - 6 new spells and 6 new exams!</li>
</ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2s13Ef80Iyk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjUwLmpwZw==/original/fDu%2B9G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjQ5LmpwZw==/original/lA19e2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjQ4LmpwZw==/original/m1SwXM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjM4LmpwZw==/original/UwzXmF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjQxLmpwZw==/original/sImqRp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjQwLmpwZw==/original/qH7YPd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzMxLmpwZw==/original/8VV5rs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzI5LmpwZw==/original/3ZDAUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzI4LmpwZw==/original/%2BoYALc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzMwLmpwZw==/original/62N1k4.jpg]]
<p>THE YEAR IS 1997 AND POP MUSIC RULES THE WORLD.</p>
<p>From their secret headquarters inside Big Ben groups of Spice Girls in tour busses are dispatched to solve all of the world’s most dangerous problems with girl power and music.</p>
<p>It is a better world, a brighter world, a SPICE WORLD.</p>
<p><br></p>
<p>SPICEPUNK 1997 is a rule-light tabletop roleplaying game set in the fantastical world of the Spice Girls. Play as a Spice Girl of your own creation and prepare yourself for the unexpected as your SPICE UP YOUR LIFE!</p>
<p>SPICEPUNK&nbsp;1997 was created by Nick Kornek &amp; Jeanne Elizabeth Vachon. It is based on <a href="https://johnharper.itch.io/lasers-feelings">Lasers &amp; Feelings by John Harper</a></p>
<p>You will need:</p>
<ul><li>A handful of six-sided dice</li><li>Some Story Cubes (We use&nbsp;<a href="https://amzn.to/3s3qGld" target="_blank" rel="nofollow noopener">Rory's Story Cubes</a>)</li><li>At least one character sheet per player (included)</li><li>One tour bus sheet&nbsp;(included)</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTYyODAyLzU2MjY2NTIucG5n/original/vb0uQh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyODAyLzU2MjY2NTMucG5n/original/ps6SKd.png]]
<p><img src="https://img.itch.zone/aW1nLzYxNTczNzkucG5n/original/2Q5%2Fyw.png" loading="lazy">Estimated playtime: 45 minutes to 1 hour. <strong>This game does not have a save function</strong>.</p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg3MzcucG5n/original/KeBScj.png" loading="lazy"></p>
<p><strong>Spirit Cleaning</strong> is an action/visual novel hybrid game where you play as The Cleaner, a spring cleaner visiting a residential house in the suburbs.</p>
<p>However, this job isn't a normal one - each room of the house is haunted by the tragedies that befell its many residents and their bloodied crime scenes.</p>
<p><em>And they're all anime girls.</em><br></p>
<p>
</p>
<h2><img src="https://img.itch.zone/aW1nLzUwNjg2NDcucG5n/original/E7UJlB.png" loading="lazy"></h2>
<p>There are two control schemes (selectable in the Pause menu [Esc]):</p>
<ul><li>Tank controls - W to move forward, A/D to turn.</li><li>Camera-relative controls: WASD to move. The direction you move will depend on where the camera faces.</li></ul>
<p>Press E to interact with things!</p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2NDMucG5n/original/MGzfNN.png" loading="lazy"></p>
<p>Contains ghosts talking about deaths of varying levels of violence.<br>Contains bloody/gorey scenes and strong language/profanity.<br></p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2MzYucG5n/original/xL%2BDEM.png" loading="lazy"></p>
<p>You'll find out. But we do have a talking car, and a Gamer.<br></p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg1OTQucG5n/original/Ns44RF.png" loading="lazy"><br></p>
<ul><li>An eerily familiar house to explore!</li><li>7 ghosts/rooms with unique stories!</li><li>Cleaning minigame action!</li><li>Demonic Rituals!</li><li>At least 1 existential crisis.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2MTkucG5n/original/hLn5PB.png" loading="lazy"><br></p>
<p><a href="https://harrypetch.itch.io/" target="_blank">Harry Petch</a> - Game Design, Writing and Management<br><a href="https://starskull.itch.io/" target="_blank">StarSkull</a> - Code Octopus, Mechanics Design and Implementation, Proofreading<br><a href="https://ceoofbadart.itch.io/" target="_blank">CEO of Bad Art</a> - Character Art and Co-writing<br></p>
<p>Features some music and art by <a href="https://l-a-u-g-h.itch.io/" target="_blank">Erik Sheader</a>, and some art by <span class=""></span><a href="https://allenrut.itch.io/" target="_blank">Allen Rutledge</a><span class=""></span>.<br>All other attributions included in game.</p>
<p>A game made for the HQ Residential House Game Jam. <em>Thanks for the opportunity to develop this, we've really learnt a LOT from this project!</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/8Dglkzjqblw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjc5NTMucG5n/original/WRkEqV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjU5OTEucG5n/original/Y7Irhm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjc5NTIucG5n/original/avXsT0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjYwMzcucG5n/original/GjwtXo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNzA4ODIucG5n/original/wP7DYm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjYwMzYucG5n/original/GVOnIU.png]]
<h2 class="text-center"></h2>
<figure><img src="https://img.itch.zone/aW1nLzU2MDQ4OTYucG5n/original/q19tFm.png" loading="lazy"></figure>
<p>
</p>
<p><strong>Spirit Swap: Lofi Beats to Match-3 To</strong>&nbsp;is an action-puzzle game set in a lush, narrative-driven world of witchy demons. Cast spells, be queer, &amp; crash the biggest concert of the year!<br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU2MDQ4NzkuZ2lm/original/aThIvC.gif" loading="lazy"></figure>
<figcaption><br></figcaption>
<p>By night, use Samar’s powers to help send transdimensional spirits back home. By day, roam the city and chat with friends, planning the ultimate pizza party for everyone to come together and catch up.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjguZ2lm/original/fOwIak.gif" loading="lazy"><br></p>
<figcaption><br></figcaption>
<p><img src="https://img.itch.zone/aW1nLzU2MDQ4OTIucG5n/original/MPLf5S.png" loading="lazy"></p>
<ul><li>&nbsp;<strong>Match to the beat&nbsp;</strong>as you reassemble lost spirits, and enjoy a custom lofi hip-hop soundtrack by the incredible Meltycanon.
</li><li>&nbsp;<strong>Cast powerful spells.</strong>&nbsp;Arrange spirits into special patterns to unlock potent powers!
</li><li>&nbsp;<strong>Compete in local VS mode!</strong>&nbsp;Everything is chill, until it gets permanently unchill....
</li><li>&nbsp;<strong>Enjoy over 5 unique game modes,</strong>&nbsp;including Time Attack, Score Attack, and Survival.
</li><li>&nbsp;<strong>Bond with a cast of witches and demons</strong>. Plan a pizza party together, crash a concert, maybe even smooch!
</li><li>&nbsp;<strong>Decorate your bedroom</strong>. Earn trinkets and keepsakes as you play, then place them in Samar’s room to affect the game!
</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjcuZ2lm/original/Bb3UHi.gif" loading="lazy"></p>
<p><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzU2MTI1NjQucG5n/original/bWD0Jw.png" loading="lazy">&nbsp;</strong></p>
<ul><li>&nbsp;<strong>No microtransactions here.</strong>&nbsp;<strong>Spirit Swap</strong>&nbsp;is a premium game, which means you'll be able to enjoy it without worrying about hidden costs.
</li><li>&nbsp;<strong>Queer</strong>&nbsp;<strong>and diverse joy.</strong>&nbsp;Much like the cast of&nbsp;<strong>Spirit Swap,</strong>&nbsp;our team is also is queer, Black, and/or POC, and it's well past time we see ourselves experiencing happiness in media. This is a slice-of-life story for players needing a relaxing experience!
</li><li>&nbsp;<strong>A fresh look at Middle Eastern fantasy by creators FROM the region.</strong>&nbsp;<strong>Spirit Swap</strong>&nbsp;is set in a fictional city inspired by the Levant, a region rarely explored (in a positive light) in games.</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjUuZ2lm/original/9XohBg.gif" loading="lazy"></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Fe4p3xl4RAk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjYucG5n/original/kSLuk%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjUucG5n/original/m9qia7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjQucG5n/original/Fm032i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMzEucG5n/original/5rm8Fc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjgucG5n/original/a6Rgy2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjMucG5n/original/ZzOTqT.png]]
<p>You don't know who you are, or how you got here. There's no explanation for any of this.<br>There's only one thing you can do. Endure the challenges that get thrown in your way, learn them as best as you can and find a way to escape from this eternal punishment.<br>Fight. Not to save the world, but to maybe save yourself.<br></p>
<h2>An endless stream of challenges</h2>
<p>Splinter Zone creates an infinite chain of levels for you to traverse and test your skills in.<br></p>
<h2>Reliable Randomness</h2>
<p>Splinter Zone doesn’t feature a true random level generation. Instead, its levels are pre-constructed, but the order in which they appear is randomly generated. This way it is still possible for you to get familiar with the game’s challenges while still having a unique experience every time you play.<br></p>
<h2>Permission to cheat</h2>
<p>Splinter Zone is a challenging game, but sometimes you may want to have a more relaxed experience. For those moments, Splinter Zone features a handy array of cheats that you can enable right at the start of the game. You can even turn off all enemies in the game, if you so desire...<br></p>
<h2>Secrets</h2>
<p>I can’t talk about those...</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/O9ajjv0xaNg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzY3ODM2OC5naWY=/original/l9CJWo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzUyOTA4Ni5wbmc=/original/7v%2BbGG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzUyOTA5MC5wbmc=/original/XrsZhU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzY3ODM3MC5naWY=/original/T8bEQH.gif]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/iiNR9_JTYEc" allowfullscreen="" frameborder="0"></iframe><br><br></div>
<p>Spooky Ghosts Dot Com is a small metroidvania about a ghost hunter named Ruby.&nbsp; One Halloween night a ghost hunting job comes in, but it turns out to not be a regular gig!</p>
<p><img src="https://img.itch.zone/aW1nLzExMjA5OTIucG5n/original/K9gye0.png" loading="lazy"><br></p>
<p>Features:</p>
<p>-5 different interconnected spooky areas to fight through.<br>-50+ rooms to explore!<br>-6 spooky bosses to defeat.<br>-Find and pet all 8 lost cats!<br>-Items to boost Rubys power and gain new abilities!<br>-Ghost buddies, cats, shopkeepers, and others to meet within the mansion.<br><br><img src="https://img.itch.zone/aW1nLzExMjA5OTMucG5n/original/t8ED3%2B.png" loading="lazy"></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/iiNR9_JTYEc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4NzkuZ2lm/original/9OWQO%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODAuZ2lm/original/KUz9s1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4OTEuZ2lm/original/LY60Y8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODMuZ2lm/original/YN0P2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODQuZ2lm/original/PRC6P0.gif]]
<p><strong>Spooky Station</strong>&nbsp;is a game pack filled with&nbsp;<strong>9 ghostly games</strong>&nbsp;of all types. From an&nbsp;<strong>arena-brawler</strong>&nbsp;to a&nbsp;<strong>rogue-like</strong>, from a&nbsp;<strong>text-adventure</strong>&nbsp;to a&nbsp;<strong>shoot 'em up</strong>, and even a&nbsp;<strong>GameBoy™ game</strong>, this bundle is certain to&nbsp;<strong>spook your socks off</strong>!<br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/MOSHED-2019-9-16-11-15-10.jpg?t=1569453793" style="color: inherit; font-size: inherit; padding: 0px; margin: 0px" loading="lazy"></figure>
<p><br><strong>Games included in this pack:</strong><br></p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/spooky-cooking-banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Have a nice Halloween in a&nbsp;<strong>lovely&nbsp;</strong>and&nbsp;<strong>casual way&nbsp;</strong>with a one-button game that tries to bring back the&nbsp;<strong>competition&nbsp;</strong>of the arcade era, where you need to&nbsp;<strong>shoot a pumpkin</strong>&nbsp;towards to a&nbsp;<strong>cauldron</strong>&nbsp;while&nbsp;<strong>dodging obstacles</strong>, a simple mechanic that's&nbsp;<strong>easy to understand</strong>, but hard to&nbsp;<strong>master</strong>, this game can please&nbsp;<strong>casual gamers</strong>&nbsp;as well as&nbsp;<strong>hardcore ones</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/tower_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Explore a&nbsp;<strong>creepy, demon-filled dungeon</strong>&nbsp;with&nbsp;<strong>100 floors</strong>&nbsp;and save your city from&nbsp;<strong>certain doom</strong>&nbsp;with&nbsp;<strong>Sewer Cat</strong>&nbsp;and his partner&nbsp;<strong>Dirty Paws</strong>&nbsp;in this&nbsp;<strong>classic rogue-like style adventure</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/cosmic_rain_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Use&nbsp;<strong>spooky blobs</strong>&nbsp;from the&nbsp;<strong>Cosmic Rain</strong>&nbsp;in this&nbsp;<strong>Match 3</strong>&nbsp;game to obtain&nbsp;<strong>power&nbsp;</strong>and achieve your ultimate goal of learning how to be a&nbsp;<strong>blobmancer</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/sarah_banner2.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Wishing Sarah</strong>&nbsp;is a top-down&nbsp;<strong>GameBoy adventure game</strong>&nbsp;where the player must explore a&nbsp;<strong>bizarre world</strong>&nbsp;and help Sarah to wake up&nbsp;<strong>once and for all.</strong></p>
<ul><li>Supports keyboard and Xbox controllers.</li><li>Includes original GameBoy™ ROM image!</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Thursday_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this&nbsp;<strong>first person adventure</strong>, you help our&nbsp;<strong>friendly serial killer Johnny</strong>&nbsp;in his routine, searching for all the stuff he needs to prepare for his&nbsp;<strong>big day</strong>.&nbsp;<strong>Interact&nbsp;</strong>with the items you find or&nbsp;<strong>inspect&nbsp;</strong>them to know what’s going through&nbsp;<strong>Johnny’s mind</strong>.<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/worship_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>A&nbsp;<strong>2-player party game</strong>&nbsp;where you compete with a friend to see who is the&nbsp;<strong>best worshiper</strong>&nbsp;of the<strong>&nbsp;demon lord</strong>!</p>
<ul><li>Supports Xbox controller for a 2nd player.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/curse_bringer_banner_logo.gif?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this text based game you assume the role of Sister Constance, a member of a secret organization responsible for delivering the Death Curse to marked targets. A new job has been assigned to you, but in order to end your target you must gather the ingredients and make choices.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/killing_moon_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Killing Moon</strong>&nbsp;is a&nbsp;<strong>high school Halloween thriller</strong>&nbsp;made as a homage to all great&nbsp;<strong>slashers&nbsp;</strong>and&nbsp;<strong>suspense movies</strong>. The game follows three friends,&nbsp;<strong>Ash (Ashley) J. Raimi</strong>,&nbsp;<strong>Barbara Romero</strong>&nbsp;and&nbsp;<strong>R.J. MacCarpenter&nbsp;</strong>during a&nbsp;<strong>Halloween party</strong>&nbsp;in their high school. Every thing feels like just another stupid school party until&nbsp;<strong>lights start to fail&nbsp;</strong>and&nbsp;<strong>weird things happen</strong>. Like,&nbsp;<strong>really weird sh*t</strong>. You play as a&nbsp;<strong>different protagonist</strong>&nbsp;in each game chapter and each character will&nbsp;<strong>add his or her own outlook</strong>&nbsp;on the events that took place in that&nbsp;<strong>peculiar night</strong>.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Spookids_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Spooky Land is a&nbsp;<strong>mysterious</strong>&nbsp;and&nbsp;<strong>treacherous&nbsp;</strong>place, but none of that will stop a group of&nbsp;<strong>mischievous kids'</strong>&nbsp;search for candy! Defeat&nbsp;<strong>monsters</strong>, avoid&nbsp;<strong>traps&nbsp;</strong>and&nbsp;<strong>collect candy</strong>&nbsp;in this&nbsp;<strong>shoot'em up adventure&nbsp;</strong>for up to&nbsp;<strong>4 players coop</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers for all players.</li></ul>
<p></p>
<p><br></p>
<p>With&nbsp;<strong>Spooky Station</strong>, you're guaranteed to have hours of&nbsp;<strong>Halloween-themed fun</strong>&nbsp;with diverse gameplay styles and amazing stories.</p>
<p><br></p>
<p><br></p>
<blockquote><em>Spooky Station © Estúdio Vaca Roxa 2019<br>Wishing Sarah © Asteristic Game Studio 2019<br>Killing Moon © Joymasher 2013<br>Spookids © Relixes, Crowno (Spookids Team) 2019<br>Thursday the 12th © Calangames 2019<br>Cosmic Rain © Expresso Studios 2019<br>Worship the demon lord with friends © Pastel Studios 2019<br>Spooky Cooking © Heavy Sheep 2019<br>Tower of 100 Floors © LASTONE 2019<br>Curse Bringer © Vee 2019</em></blockquote>

<iframe width="720" height="450" src="https://www.youtube.com/embed/P6nur2s4qgc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgyNjYuZ2lm/original/fm9G8S.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTQuZ2lm/original/3vVRWl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzNTQuZ2lm/original/ChzY3V.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTMuZ2lm/original/1mIsUk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMjQucG5n/original/eC0RJn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMzEucG5n/original/OheDsg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzMuanBn/original/HGPLbF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzguanBn/original/l0AvWp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyNDAuanBn/original/9rdBWv.jpg]]
<p>Spring Falls is a puzzle game about water, erosion, and watching things grow.<br></p>
<p>Manipulate the landscape and bring wildflowers to life as you make your way down a peaceful mountainside.</p>
<p>Soft visuals, ambient guitar work, and environmental sounds come together to create a meditative, relaxing experience.</p>
<p><img src="https://img.itch.zone/aW1nLzMzODIyNjUuZ2lm/original/NV9%2Bq4.gif" loading="lazy"><br></p>
<p>Features:<br>• 60 hand-crafted levels<br>• Unique gameplay revolving around water flow<br>• Ambient-folk soundtrack and organic atmospheric sounds<br>• Gorgeous mountain vista backdrops</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/J1x4jjQq2wE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDMucG5n/original/XSWpB1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDQucG5n/original/fPQ6eW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDYucG5n/original/09UQhR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDUucG5n/original/gcDlp8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDcucG5n/original/Cx6qRJ.png]]
<p>Spritedow Animator is a simple and standalone alternative to Mecanim to animate sprites frame by frame.&nbsp;<br><br>Just drop your sprites or spritesheets to the editor and you will have an awesome animation in a jiffy (hehe).&nbsp;<br><br><a href="https://assetstore.unity.com/packages/tools/sprite-management/spritedow-animator-82525?aid=1101lIr6" target="_blank" rel="nofollow noopener">You can also buy it at te Unity Asset Store!</a><br><br><strong>NOTE</strong><br>This plugin is oriented to programmers: althought it has a visual animation editor all the cool features need some code to work.&nbsp;<br><br><strong>FEATURES</strong><br>- Simple and easy to use Animation editor<br>- Animation preview<br>- Play animations forward or backward<br>- Play random animations<br>- Animate ignoring time scale<br>- Custom animation framerate<br>- Custom frame duration<br>- Basic events (onPlay, onStop...)<br>- Custom events<br>- Works with SpriteRenderer and UI Images<br>- Renderer control methods<br>- Make simple behaviours without code (loop, random, play on awake, delay between loops, disable renderer on end...)<br>- Completely standalone, this plugin does not use the Unity's animation system</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/siyAoQLGOD8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MTA4LzEwNTgyNjguanBn/original/EDZuKg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MTA4LzEwNTgyNjkuanBn/original/Ro4YnN.jpg]]
<h2><strong>Stacks On Stacks (On Stacks)</strong> is a zany 3D tower builder. </h2>
<p>Play as the Master Stacker, Rockit, who must use her psychic helmet to clean up the colorful bricks falling all over her madcap world.</p>
<ul><li>BUILD stable towers by executing architectural feats of balancing.
</li><li>INCORPORATE mixed-up materials into your towers: works of art, aquariums, magnets, and more.
</li><li>DEFEND your towers against invading ghosts, a fireball-breathing dragon, and other outlandish hazards.
</li><li>KNOCK your finished towers back down with a wrecking ball.</li></ul>
<h3><strong>Ways to Play:</strong></h3>
<ul><li>Story mode:&nbsp; 36 stages featuring twists on stacking such as constructing on quicksand or a giant spring scale.
</li><li>Co-op: Team up to complete the game with a partner.
</li><li>Versus: best your bud with better balance with split-screen local multiplayer.
</li><li>Twitch mode: optional Twitch integration lets your viewers vote to influence the game.</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzM0NzMyMzUucG5n/original/gCcqMd.png" alt="Reward laurels" title="Reward laurels" loading="lazy"></figure>
<p><em><br></em><em>Questions? Bugs? </em><em>Contact: <strong> </strong></em><em><strong>support [-at-] herringbonegames [-dot-] com</strong></em><br></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Opk3QYZv2pg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzUucG5n/original/CKGdLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzQucG5n/original/iF3pwq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzkucG5n/original/fvEqET.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzcucG5n/original/Aktw5m.png]]
<p class="text-center"><br></p>
<p>During its journey StarBoy crashed and got lost in an unknown planet, help him return back to its spaceship!<br></p>
<p><strong><br></strong></p>
<p><strong>INFO</strong>
</p>
<p>6 levels, for approximately 1-2 hours of gameplay, depending on your skill and will to 100% it
</p>
<p>Progress is saved on level completion
</p>
<p>Completing the 6 levels unlocks a level selection screen so you can look for missing shards or&nbsp;try to achieve a better time
</p>
<p>Collected shards are saved when returning to title screen or level selection from the pause menu
</p>
<p><br></p>
<p><strong>CONTROLS</strong></p>
<table><thead><tr><th>Actions</th><th>Keys</th></tr></thead><tbody><tr><td class="text-center">Move</td><td class="text-center">ARROW KEYS | A | D</td></tr><tr><td class="text-center">Jump</td><td class="text-center">X | J</td></tr><tr><td class="text-center">Grab | Throw</td><td class="text-center">C | K</td></tr><tr><td class="text-center">Climb Ladder</td><td class="text-center">ARROW KEYS | W | S</td></tr><tr><td class="text-center">Open Pause Menu</td><td class="text-center">ENTER | RETURN</td></tr></tbody></table>
<p><br></p>
<p><strong>CREDITS</strong><br></p>
<p><a href="https://managore.itch.io/m3x6" target="_blank">m3x6</a> font by Daniel Linssen<br>Some sounds made with&nbsp;<a href="https://rxi.itch.io/sfxia" target="_blank">sfxia</a> by rxi<span></span></p>
<p>Follow me on <a href="https://twitter.com/mrkdji" rel="nofollow noopener">Twitter!</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODYyOTQwLmdpZg==/original/Iasxto.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODY0Mjc3LmdpZg==/original/FKZFqd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODY0Mjc4LmdpZg==/original/07Zaz3.gif]]
<p>This game is a spiritual successor to Kirby Star Stacker. Enjoy levels of great size, or intense restriction. Chill with an endless mode, or try to speed run it! A relaxing game about the garden, enjoy the sounds of the woods, while using your bug friends to collect the flowers. Sandwich flowers or buds between two matching bug friends to collect them! Or, sandwich special blocks, like the watering well or the lawn mower to use special effects.</p>
<p>Watch some gameplay here:&nbsp;</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/YxPQeh6hCBg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>This game was developed by only me, for art, music, sound, and programming using GameMaker1. Its been years since I last worked on the game, and I don't think I have the source code anymore, so I cannot provide support for this game anymore! The game itself is done, there are just a few menu elements that were not finished.&nbsp;Also there are some cheats! Try pressing the left Ctrl, or holding the number keys while clicking the game board!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/YxPQeh6hCBg" frameborder="0" allowfullscreen></iframe>

<h2></h2>
<h2><u>Overview</u></h2>
<p><em>Steam Marines 2</em> brings you to distant star systems and planetoids square in the path of conflict between the Tor alien race and the banner of sentient machines.</p>
<p>Take the helm of the <em>I.S.S. Delhi</em> and build your crew of marines and fleet resources toward the ends you choose.</p>
<ul><li>Permadeath - take care of your marines or die trying.</li><li>Turn-based combat - master movement and fire tactics.</li><li>Procedural generation - ship interiors and planetside levels.</li><li>Factions - human, alien, and robot units with their own gear and tactics.</li><li>Customization - marines with names, portraits, and gear.</li></ul>
<p><em><a href="http://www.SteamMarines2.com" rel="nofollow noopener"></a></em><a href="https://www.SteamMarines2.com" target="_blank" rel="nofollow noopener">Official website</a></p>
<p><a href="https://www.worthlessbums.com/PressKit/sheet.php?p=steam_marines_2" target="_blank" rel="nofollow noopener">PressKit!</a><br></p>
<p><a href="https://worthlessbums.us19.list-manage.com/subscribe?u=8bf61bade9ecbf95ed2284b64&amp;id=247236cfec" target="_blank" rel="nofollow noopener">Email Signup!</a><br></p>
<p><em></em></p>
<p><br></p>
<h2><u>Original Soundtrack</u></h2>
<p><a href="https://worthlessbums.itch.io/steam-marines-2-original-soundtrack" target="_blank">Available on Itch!</a></p>
<p><br></p>
<h2><u>Merchandise</u></h2>
<p><a href="https://www.redbubble.com/people/worthlessbums" target="_blank" rel="nofollow noopener">Hoodies and more at Redbubble!</a></p>
<p><br></p>
<h2><u>Crew</u></h2>
<p>Coder/Designer - Yik-Sian James Seow</p>
<p>Character Animator - Edward del Villar</p>
<p>Environment Artist - Daniel Allen</p>
<p>Portrait Illustrator - Jenny Pattison</p>
<p>Audio - James Mulvale</p>
<p>User Interface Art - David G. Baumgart</p>
<p><br></p>
<h2><u>Other Links</u></h2>
<p><a href="https://worthlessbums.itch.io/steammarines" target="_blank">Steam Marines on Itch!</a>
</p>
<p><a href="https://worthlessbums.itch.io/steam-marines-3" target="_blank">Steam Marines 3 on Itch!</a></p>
<p><br></p>
<h2><u>Minimum System Requirements</u></h2>
<p><em>Windows</em></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p><li><strong>OS:&nbsp;</strong>Windows 7</li><li><strong>Processor:&nbsp;</strong>2.0 GHz Dual Core</li><li><strong>Memory:&nbsp;</strong>2 GB RAM</li><li><strong>Graphics:&nbsp;</strong>700Mhz / 1GB</li><li><strong>DirectX®:&nbsp;</strong>10 (shader model 4.0)</li><li><strong>Hard Drive:&nbsp;</strong>1 GB HD space</li><li><strong>Screen Resolution:</strong>&nbsp;1366x766</li><li><strong>Input:</strong> Mouse and keyboard</li><p></p><p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><span></span></p>
<p><em>Linux</em></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p><li><strong>OS:&nbsp;</strong>Ubuntu 14.04 LTS</li><li><strong>Processor:&nbsp;</strong>2.0 GHz Dual Core</li><li><strong>Memory:&nbsp;</strong>2 GB RAM</li><li><strong>Graphics:&nbsp;</strong>700Mhz /&nbsp;1GB&nbsp;(not Intel HD Graphics)</li><li><strong>Hard Drive:&nbsp;</strong>1&nbsp;GB HD space</li><li><strong>Screen Resolution:</strong>&nbsp;1366x766</li><li><strong>Input:</strong>&nbsp;Mouse and keyboard</li><p></p><p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><u><br></u></p>
<p><u></u></p>
<h2><u>Steam Keys</u></h2>
<p>Every purchase of&nbsp;<em>Steam Marines 2</em>&nbsp;on Itch.io will come with one Steam key when the game releases on Steam.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6CWZy5CLyEs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzYxOS5naWY=/original/UnfHv8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzU2Mi5naWY=/original/eOb57w.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzYwNS5naWY=/original/UmCeCM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMTU2ODM3My5wbmc=/original/VzDkbv.png]]
<iframe width="550" height="309" src="https://www.youtube.com/embed/Mw5T_Bs5-H0" frameborder="0" allowfullscreen=""></iframe>
<p>
	Steam Marines is a squad based Roguelike featuring tactical play focused on positioning and careful use of resources. Keep on your toes as you fight through your besieged ship trying to reach each level's elevator. <br>
	<br>
	<strong>Features</strong></p>
<ul><li>Death is permanent and fallen marines are gone forever.</li><li>Five marine classes, each with their own unique weapon effects.</li><li>Four ranks and five perks for&nbsp;marine build diversity.</li><li>Exoskeleton suits stripped from the hulks of dead enemies.</li><li>Challenging bosses that do not negate the tactics you have learned.</li><li>New Game Plus!</li></ul>
<p><a href="https://worthlessbums.us19.list-manage.com/subscribe?u=8bf61bade9ecbf95ed2284b64&amp;id=247236cfec" target="_blank" rel="nofollow noopener">Email Signup!</a></p>
<p><br></p>
<h2><u>Other Links</u></h2>
<p><a href="https://worthlessbums.itch.io/steam-marines-2" target="_blank">Steam Marines 2 on Itch!</a><br></p>
<p><a href="https://worthlessbums.itch.io/steam-marines-3" target="_blank">Steam Marines 3 on Itch!</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Mw5T_Bs5-H0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvMTA2NTY3OC5naWY=/original/o4gRaC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvNDE4NDcuanBn/original/4zRx%2F8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvNDE4NDguanBn/original/7p3kGm.jpg]]
<p><strong>Windows, Linux and Mac updated to 1.10.0.<br></strong></p><p>This adds all of the mothership approach (air and ground), and the air version of the last stage of the game. It also fixes bugs described in the devlog.</p><p><a href="https://deepshock.itch.io/steel-seraph/devlog/240298/version-1100-updated-on-windows-linux-and-mac">https://deepshock.itch.io/steel-seraph/devlog/240298/version-1100-updated-on-win...</a><br></p><p>.<br></p><p><br></p>
<p><span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/aT_wIdRY5ts" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3Ni5wbmc=/original/SWDl46.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4NS5wbmc=/original/hihy4h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxOTAwMC5wbmc=/original/nTWeMB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3OC5wbmc=/original/kecn2a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4NC5wbmc=/original/2bz3yE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5OS5wbmc=/original/n%2FDgSp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4MC5wbmc=/original/goI3k8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4MS5wbmc=/original/Z%2FQKb5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Ni5wbmc=/original/HCUmry.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Ny5wbmc=/original/UFTCpo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Mi5wbmc=/original/gmBJrH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3Ny5wbmc=/original/oyCX1g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5OC5wbmc=/original/fM4jmk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4My5wbmc=/original/M4zgFg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Ni5wbmc=/original/ShaG45.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5MC5wbmc=/original/wmbGKl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4OS5wbmc=/original/QnLQ05.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Ny5wbmc=/original/EtQ3v5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Mi5wbmc=/original/9j79x7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4OC5wbmc=/original/%2B8vjYM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5MS5wbmc=/original/2uVLS3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5My5wbmc=/original/WBD87x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5NC5wbmc=/original/oEqayu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5NS5wbmc=/original/3k5Wct.png]]
<p>Sticky Cats is a 2 - 4 player party game, where players must steal the fish and escape out the window while sticking to everything and causing mayhem along the way.</p>
<p><strong>NOW WITH ONLINE MULTIPLAYER!</strong></p>
<figure><img src="https://img.itch.zone/aW1nLzU5ODQyMjIucG5n/original/56iHPx.png" loading="lazy"></figure><p><strong>Gamepad Controls:</strong><br></p>
<p>Start/triangle button: Join game<br>Joystick: Move/aim for jumping<br>A or X button : Jump<br>Back button: Restart level</p>
<p><strong>Keyboard Controls:</strong></p>
<p>Enter: Join game<br>WASD/Arrow keys: Move/aim for jumping<br>Space: Jump<br>R: Restart level</p>
<p><strong>Credits:</strong></p>
<p>Jem Smith - Design and code<br><a href="https://twitter.com/jemmiwinks" target="_blank" style="font-size: inherit" rel="nofollow noopener">@jemmiwinks</a></p>
<p>Jason Sutherland - Design, art, and audio<br><a href="https://twitter.com/DriftPrism" target="_blank" rel="nofollow noopener">@DriftPrism</a></p>
<p>Follow&nbsp;<a href="https://twitter.com/stickycatsgame" target="_blank" rel="nofollow noopener">@stickycatsgame</a>&nbsp;on Twitter</p>
<p>Please get in touch if you have any feedback, issues, or questions, and we’ll try and help.</p>
<p>Thanks for playing!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ohPWwpeXy3U" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMzk3NjEucG5n/original/iHVxA4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDYucG5n/original/3LRIXo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDUucG5n/original/zxdlG4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDMucG5n/original/9lVbxz.png]]
<p>The two of you enter the shrine together. Only one of you will leave. Such is the ritual. Such is the path to restoring peace with your community. Something must transform.</p>
<p>Stories and Smoke is a narrative game about confronting yourself, your past, and your community, and choosing how -- or <i>if</i> -- you will return to your society. What soured the relationship with your people, during your training as a Bard? How will you move forward with your life, and reintegrate your story? How do you feel about the Other who is in here with you?</p>
<p>Who will walk out of the shrine?</p><p></p>
<p>~</p>
<p>Originally created during the 2020 Global Game Jam.</p>
<p>~</p>
<p><strong>Credits:</strong></p>
<p>Writing:&nbsp;Lucas J.W. Johnson and&nbsp;Claris Cyarron<br>Music and Sound:&nbsp;Devin Vibert<br>2D Art:&nbsp;Kimberly Parker<br>Programming and 3D Art:&nbsp;ceMelusine<br>Game concept by Claris Cyarron</p>
<p>Produced by Silverstring Media Inc.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNjgucG5n/original/JmFUuT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzAucG5n/original/NMXF5E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNjkucG5n/original/Bj1KID.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzMucG5n/original/pRKS3h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzEucG5n/original/NtEjQi.png]]

<p>Fossil moth slideshow<br></p>
<p>
	<span></span>alt=3D"Highlights From The Past Decade"
</p>
<p>
	ص¤SèªÃyÖéénºùõt­º¬hÿßðrÌ×Ýo¦ßÞið¤×dõù¢ ƪüaó·åsæÏµ ô¥Ól¶â¼oÁ¼ðw¢à² ³éýaâÂÅs¤ûº ú½²$¤×ì0§Èí.æâ¦3ìÕ·5å¸ì
</p>
<p>
	Come up her eyes open. Next to winter air and now that.
</p>
<p>
	<span></span>&lt;td&gt;Puzzled by judith bronte adam. According to hide her chair.&lt;/td&gt;</p>
<p>
	control =
</p>
<p>
	room.
</p>
<p>
	Taking her =
</p>
<p>
	chair to get more.
</p>
<p>
	(And) leaned down the center of someone.&lt;/span&gt;</p>
<p>
	&lt;span style=3D"color:#F2F6F4; font-size:9pt"&gt;Already made sure you =
</p>
<p>
	women.&lt;br&gt;Skip had given him o=EF ered. Again he felt as though someone =
</p>
<p>
	else.
</p>
<p>
	&gt;:&lt;/span&gt;Tears and found the bu=EF alo robes. Stay put in =
</p>
<p>
	Word in search of wind as =</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzAzLnBuZw==/original/42HKS3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA2LnBuZw==/original/XW5Vj5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA0LnBuZw==/original/4oOmsK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA4LnBuZw==/original/kFIxHk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzExLnBuZw==/original/QSU6x0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA5LnBuZw==/original/TaQMaH.png]]
<p>
	<br>
</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Eii9Di0h8SE" frameborder="0" allowfullscreen="">
</iframe>
<p>Subterrarium is a game about digging your way home through…unconventional means. </p>
<p>Collect money from dirt, use it to buy soda from vending machines, and then use that soda to water the seeds scattered around the level. 
</p>
<p>Every plant gives you an advantage, whether it's a vine that allows you to reach great heights, or a bombplant that clears out a chunk of dirt for you.</p>
<p>But be careful—with every move, the dirt becomes more unstable. One wrong step could lead to a fatal cave-in.</p>
<hr>
<p>
	Game: Taylor Anderson (@ttl_anderson)
</p>
<p>
	Music+Sounds: PixelFx (pixelfx.bandcamp.com)
</p>
<p>
	<br>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Eii9Di0h8SE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzIyLnBuZw==/original/JTGlNe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzIzLnBuZw==/original/sD2Yjr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzI0LnBuZw==/original/kZRRT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2NDg5LnBuZw==/original/FFRFqI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTgzLnBuZw==/original/vbxNXS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTg1LnBuZw==/original/tgYBpv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTg3LnBuZw==/original/sVCBEo.png]]
<p>Sun Dogs is about exploring our inner solar system, altering your body, and embracing death.</p>
<p>In a future where humanity alters itself without a second thought, you must do the same. Skim along the Sun's corona, float in the Venusian clouds, travel the Martian plains. When your body dies, your mind will be given a new one, and you will keep going.</p>
<p>Featuring an expansive world of unique science fiction, spread across planets, moons, and space stations. Dynamic text reacts to your character and your actions, and a full modding system allows you to rewrite the entire game.</p>
<p>Follow <a href="http://www.twitter.com/sundogsgame" rel="nofollow noopener">twitter</a> for more updates and bits of fiction. </p>
<p>Credits: </p>
<p><a href="http://www.twitter.com/nictringali" rel="nofollow noopener">Nic Tringali</a> - writing and design <br><a href="http://www.twitter.com/azuresama" rel="nofollow noopener">Rebecca McCarthy</a> - writing<br><a href="http://www.twitter.com/coda_b" rel="nofollow noopener">Sasa-P</a> - music</p>
<p>Praise for <em>Sun Dogs</em>: </p>
<p><a href="http://killscreendaily.com/articles/sun-dogs-uses-text-interrogate-our-solar-system/" rel="nofollow noopener">Kill Screen</a>: "... vagueness and ambiguity are their own virtues in Sun Dogs." <span></span></p>
<p><a href="http://boingboing.net/2015/11/03/sun-dogs-game.html" rel="nofollow noopener">Offworld</a>: "The real meat of the game is the text, lush but brief, that appears to illuminate the vast array of worlds and cultures you explore."</p>
<p><a href="https://emshort.wordpress.com/2015/10/29/sun-dogs-royal-polygon/" rel="nofollow noopener">Emily Short's Interactive Storytelling</a>: "The biggest appeal for me was simply drifting from place to place and investigating all the unusual places and events." <span></span></p>
<p><a href="https://steamcommunity.com/linkfilter/?url=http://www.failbettergames.com/failbetter-suggests-sun-dogs/" rel="nofollow noopener">FailBetter Games:</a> "... a memorable and intelligent flavour to its economically written stories." <span></span></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/sI35OiUxK7s" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI4LnBuZw==/original/TQ0gxz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI1LnBuZw==/original/p32B3n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI5LnBuZw==/original/T7Dbat.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTMwLnBuZw==/original/FLPs54.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI0LnBuZw==/original/LATRzp.png]]
<p>This game was made for the Touhou Station Game Jam. All Touhou intellectual property belongs to ZUN / Team Shanghai Alice, and we greatly appreciate the opportunity to work with a part&nbsp;of it. Other credits present within the game itself.</p>
<p>Below is the original description from the jam submission:</p>
<p>A game where you try to grow sunflowers while fairies steal them and shoot at you.<br>There is some story content, but it is not necessary to enjoy the gameplay.<br>ヒマワリを植えて面倒を見ながら邪魔しに来るイタズラ妖精たちをぶっ倒すゲームです。<br>ストーリー性は特にないのでゲームプレイを楽しめると幸いです<br>&nbsp;<br>Controls:<br>Arrow keys / 方向キー : move<br>SPACE: Plant seeds / 種をまく<br>C: Growth Aura / 成長オーラ<br>SHIFT: Focus / フォーカス<br>Z: Shoot / シュート<br>X: Bomb / スペルカード<br>CTRL: Skip dialogue / 会話をスキップ<br>&nbsp;<br>Modes:<br>Story Mode / ストーリーモード<br>Endless Mode / エンドレスモード<br>&nbsp;<br>Support:<br>Windows / Mac OS X / Linux</p>
<p><br></p>
<p>(and yes, I am aware that it says it is a debug version. Don't mind that)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MTQucG5n/original/8I61av.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MDEucG5n/original/UKrYB%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE1OTkucG5n/original/MOw4Fo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MDAucG5n/original/j9amvA.png]]

<p><strong>&nbsp;a SUPERHOT ❌ Baba is You crossover game</strong></p>
<p>Break the rules of time and rearrange them to get yourself out of tricky situations. Or at least, die trying.</p>
<p><strong>CONTROLS</strong></p>
<ul><li>Move: WASD / ZQSD / Arrow keys</li><li>Jump: Space</li><li>Shoot: Left click</li><li>Throw gun: Right click</li><li>E: Edit Rules</li><li>R: Restart</li><li>U: Undo</li><li>Escape: Main menu / Quit</li></ul>
<p>Basic joystick support (tested with an Xbox controller on Windows)<br></p>
<p><em>« It's the most innovative shooter I've painfully debugged in years »</em><br></p>
<p>Made by <a href="https://twitter.com/Pyrofoux" rel="nofollow noopener">Pyrofoux</a> for 7DFPS, ProcJam and Secret Santa Jam.<br><br></p>
<p><strong>Special Thanks to</strong><br></p>
<ul><li><a href="https://www.hempuli.com/" rel="nofollow noopener">Hempuli</a>, dev of the incredible Baba is You (original inspiration, graphics and music)</li><li>The whole <a href="https://superhotgame.com/superhot-prototype/" rel="nofollow noopener">Super Hot</a> team (original inspiration, graphics and sounds)</li><li>André Cardoso's Superhot Bullet time <a href="https://github.com/mixandjam/Superhot-BulletTime" rel="nofollow noopener">Unity project</a></li><li>Caldric Clement for letting me use their <a href="https://www.youtube.com/watch?v=KJd5A739W5E" rel="nofollow noopener">Baba is You theme remix</a></li><li>The <a href="https://www.spriters-resource.com/pc_computer/babaisyou/sheet/115231/" rel="nofollow noopener">Spriter Ressource</a> for their super handy sprites</li><li>The person who made this <a href="https://www.youtube.com/watch?v=GXE0VqH08sc" rel="nofollow noopener">shader tutorial</a></li><li>MBoffin for their <a href="https://github.com/MBoffin/SimpleFPSController" rel="nofollow noopener">Unity controlle</a>r example and the Secret Santa coincidences</li><li>scrummer03 for patiently waiting for me to finish this game (;u;)</li></ul>
<p><br></p>
<p>Want to mod the game or create your own levels? <br>Check out the game's source code in this <a href="https://github.com/Pyrofoux/SUPER-IS-HOT" rel="nofollow noopener">GitHub repository</a>! <br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4MzkucG5n/original/u1itaI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4ODAucG5n/original/5oQH5u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4OTAucG5n/original/PoV0qO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4OTkucG5n/original/5P0iui.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ3ODg4NDAuanBn/original/V4K%2FNX.jpg]]

<p><img src="https://img.itch.zone/aW1nLzM3Nzc4OTMucG5n/original/ZvMa1G.png" loading="lazy"><br></p>
<p><em>Super Mutant Slayers</em> is a co-op Monster-Slaying RPG-lite with a dash of competition thrown in. It takes gameplay elements from popular video game series like&nbsp;<em>Monster Hunter, Phantasy Star Online, Destiny,&nbsp;</em>and&nbsp;<em>Pokemon,&nbsp;</em>and turns them into a quick and easy to play card-based tabletop experience.&nbsp;</p>
<p>Set in a virtual sci-fi world plagued with&nbsp;hackers and buggy code that ruins the fun for other players,&nbsp;<em>Super Mutant Slayers&nbsp;</em>puts you&nbsp;and your friends in the role of an elite group&nbsp;players known as Hunters--bug-squashing mercs who must use the very glitched-out loot they’re hired to delete in order to take down their bounties.</p>
<p>Equip yourselves with laser swords, plasma cannons, and powerful elemental attacks to create the most effective team possible.&nbsp;As you slay these Beasts, you and your friends will score hacked loot that can be used to upgrade your gear or stashed away for cash once your campaign is complete to be crowned the Master Hunter. Be careful though--get too greedy and you may find yourself ill-equipped to take down the elite creatures that plague this glitched online world!</p>
<p><strong>Features:</strong></p>
<ul><li><strong>Monster Slaying gamepaly IRL:&nbsp;</strong><em>Take on massive creatures and craft powerful weapons and armor from the loot you earn.</em></li><li><strong>Hybrid cooperative-competitive gameplay:&nbsp;</strong><em>Strike a balance between using&nbsp;powerful upgrades and useful items, or hide them away and cash-in later to become the Master Hunter.</em></li><li><strong>Quick setup and high replayability:&nbsp;</strong><em>Simple rules and card-based, modular gameplay means you can setup a campaign in minutes--no character sheets or stat rolling necessary. And thanks to the variable nature of card-based gameplay and plenty of customization options available to the players, each campaign will be totally&nbsp;different every time you play!</em></li></ul>
<p><strong>What's included:</strong></p>
<p>Everything you need to play is included right in the ZIP file, including a PDF copy of the <em>Super Mutant Slayers&nbsp;</em>rulebook and ready-to-print sheets of all the cards and game pieces.</p>
<p><em><strong>*Updated 7/1/2020:</strong></em><br></p>
<p>Super Mutant Slayers is now available as a free mod in Tabletop Simulator on Steam!</p>
<p><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2150466606" rel="nofollow noopener">https://steamcommunity.com/sharedfiles/filedetails/?id=2150466606</a></p>
<p><img src="https://img.itch.zone/aW1nLzM3Nzc4OTkucG5n/original/OhsVqt.png" loading="lazy"><br></p>
<p><em><strong><img src="https://img.itch.zone/aW1nLzM3Nzc5MDEucG5n/original/RyWeeu.png" loading="lazy"><br></strong></em></p>
<p><em><strong>*Updated 4/20/2020:</strong></em><br></p>
<p>Super Mutant Slayers version 1.2 has been released! This version includes:&nbsp;</p>
<ul><li>An all-new loot card, the Link Node, which allows you to mix and match crafting materials of different ranks&nbsp;for more flexible weapon builds.<em></em></li><li>Updated loot and crafting rules.</li><li>Rebalanced trap token mechanics.</li><li>Small tweaks to the rules book and an updated credits section.</li></ul>
<p>***</p>
<p><em>Note from developer:&nbsp;</em></p>
<p>Thank you so much for checking out <em>Super Mutant Slayers!&nbsp;</em></p>
<p>Developing this game has been my passion project for the past three years, and I am deeply grateful for your interest and support. Making a game by yourself is tough, but I’m excited to finally share it with you all.&nbsp;</p>
<p>While <em>Super Mutant Slayers</em> morphed into more of an art project over the course of its development, it’s still a completed and fully-playable game. That said, if you come away with suggestions or constructive feedback about the game or any of its supplemental materials (such as this rulebook), please feel free to leave a comment below.&nbsp;I consider <em>Super Mutant Slayers</em> to be a fully finished game, mechanics-wise, but I want it to be as fun as possible and your feedback will help me make the game better.</p>
<p>I hope you and your friends enjoy playing <em>Super Mutant Slayers!</em></p>
<p>Happy Slaying!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzI4NTQ5MjEuanBn/original/Yc9GUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwMjMuanBn/original/ucbXLH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDIucG5n/original/Jqydsv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDUucG5n/original/r2xgjy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDgucG5n/original/%2Fx0%2Fmt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODMucG5n/original/hxzv02.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODUucG5n/original/YzVEvn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODIucG5n/original/wNlMmF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODQucG5n/original/GufMjp.png]]
<p class="text-center"><em>&nbsp;Playable in&nbsp;English/Deutsch/Français/日本語/한국어</em></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/epdBMPeHWgU" frameborder="0" allowfullscreen=""></iframe></div>
<p><strong>&nbsp; &nbsp;&nbsp;R</strong>eturn to the haunted town and save the villagers once again from Evil King, the worst king ever. He's sent his skeleton armies to defile the local countryside and has set a curse upon the townspeople. Help them out by smashing every skull in the country! Purify the land and stop Evil King once and for all. This sequel takes the skull-smashing puzzle platformer in a new direction with <em>TURBO </em>action, <em>TURBO </em>puzzles and <em>TURBO </em>boss battles.</p>
<p>&nbsp; &nbsp;&nbsp;The Evil King is up to his old tricks again. He's concocted a new spell that will unleash hordes of skeletons, zombies, ghosts and even vampires. Run, jump and super-skull-smash your way through the kingdom purifying the land as you go. Battle giant robot skeleton bosses and avoid deadly traps.&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp;Journey through the eight unique lands in the Kingdom of Bones bashing monsters and solving puzzles as you go. Earn bonus hearts and find hidden secrets galore!</p>
<p>&nbsp; &nbsp;&nbsp;The villagers are relying on you once again. Can you defeat the Evil King and and his outmoded ways?</p>
<p><img src="https://img.itch.zone/aW1nLzExMDMwMzcuZ2lm/original/qkKJYd.gif" loading="lazy"><br></p>
<p>Links:
<a href="http://poppy.works/" target="_blank" rel="nofollow noopener">Website</a>&nbsp;|&nbsp;<a href="http://tinyletter.com/Wolfgame" rel="nofollow noopener">Newsletter</a>&nbsp;|&nbsp;<a href="https://twitter.com/WorkWithPoppy" rel="nofollow noopener">Twitter</a></p>
<p>リンク<br><a href="http://www.wolfgame.com/" target="_blank" rel="nofollow noopener"></a><a href="http://poppy.works/" target="_blank" rel="nofollow noopener">ウェブサイト</a>&nbsp;&nbsp;•&nbsp;<a href="http://tinyletter.com/Wolfgame" target="_blank" rel="nofollow noopener">ニュースレター</a>&nbsp;•&nbsp;<a href="https://twitter.com/WorkWithPoppy" target="_blank" rel="nofollow noopener">Twitter</a>&nbsp;<br></p>
<p class="text-center"><strong>Soundtrack by Peter Silk</strong></p>
<iframe src="https://embed.spotify.com/album/3yowpSoHDqqiepcIZS3YoV" width="100%" height="300" frameborder="0"></iframe>

<iframe width="720" height="450" src="https://www.youtube.com/embed/epdBMPeHWgU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTIucG5n/original/0RjCtk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDgucG5n/original/AlR1WN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTMucG5n/original/bbPB2k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTAucG5n/original/Gs7OB2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDkucG5n/original/3mjFi%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDcucG5n/original/mOryyd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDYucG5n/original/TF5uBD.png]]
<p><strong>Super Snake 3D</strong> is a new take on the classic Snake. Eat, increase and get faster!</p>
<p>Travel through different levels while eating fruits and collecting coins to unlock new levels and beat your highscore.</p>
<p>Avoid all the dangers in space, volcanos, a polygon world and even a multiverse while getting bigger and faster!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/1LtdHE57e04" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzcucG5n/original/kSmZje.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzgucG5n/original/xzi9QJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzkucG5n/original/0HWAAP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDAucG5n/original/Wgf%2BaK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDEucG5n/original/0EFELA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1NzEyNjAucG5n/original/urpsCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDIucG5n/original/eaY9GA.png]]
<p>
	Throw on your nostalgia goggles and travel back in time with 
	<em>Super Win the Game</em>, a retro-core explosion of exploration and platforming action!!
</p>
<ul>
	<li>Sequel to the 2012 freeware hit <em><a target="_blank" href="http://store.steampowered.com/app/286100/" rel="nofollow noopener">You Have to Win the Game</a></em> <br>
	</li>
	<li>Open-ended exploration platforming: Explore a massive world, find hidden treasures, collect powerups and gain new abilities, and uncover mysterious secrets! </li>
	<li>Adjustable CRT television simulator: Tune the retro-ness to your liking!</li><li>Speedrun courses with Steam leaderboard support! Race your friends' ghosts to the finish line!</li><li>Randomized Game mode for unlimited replayability!</li>
	<li>Includes Steam access!</li>
	<li>Do the Thing!! </li>
	<li>Get the Stuff!! </li>
	<li>Win the Game!! </li>
</ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/5GSMutcLaiU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDEyLnBuZw==/original/TlQ%2FR7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDEzLnBuZw==/original/M9bnDD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDIzLnBuZw==/original/4YhZhu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDI2LnBuZw==/original/%2BmzcXF.png]]
<p><em></em></p>
<p><em><a href="https://www.superluminauts.com/" rel="nofollow noopener">SuperLuminauts</a> is a local-multiplayer <span class="">spaceship</span> shooter where your missiles leave trails in time. With the tight feel and control of an arcade shooter, and the deep mechanics of no other, soon you'll be flying, thinking, and blowing up your friends like a true SuperLuminaut.</em></p>
<p></p>
<p><em>NOTE: SuperLuminauts is a solely local multiplayer game for 2-4 players<br></em></p>
<p><em></em><em>NOTE: Abolish the Police</em><br></p>
<p><a href="https://www.superluminauts.com" rel="nofollow noopener"></a></p>
<div class=""><iframe src="https://youtube.com/embed/d1k2h0UtKC4?&amp;vq=HD720&amp;rel=0&amp;modestbranding=1&amp;autohide=1&amp;showinfo=0&amp;vq=HD720" allowfullscreen="" width="500" height="250" frameborder="0">&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id=&quot;selection-marker-1&quot; class=&quot;redactor-selection-marker&quot;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</iframe></div>
<p><br><br><img src="https://img.itch.zone/aW1nLzc1NTI4OC5wbmc=/original/zxqNnH.png" loading="lazy"><br></p>
<ul><li><h2>2-4 Player Couch Chaos</h2>To turn your laptop or living room into a space-time arena, all you need is a keyboard &amp; mouse and another person you don't mind being temporary mortal enemies with. To maximize competitive shouting/gloating, you'll need 2 or more controllers for four players.</li><li><h2>Superluminal Trails</h2>Missiles don't just launch, they trail and richochet and shatter and cascade in a web of space-time. Keep your wits about you and adapt your tactics, or jump headfirst and enjoy the show.</li><li><h2>A Sci-Fi Rainbow of Ships</h2>Though all vehicles are outfitted with the same specs, we all know the coolest ship with the coolest paint job is going to win.</li><li><h2>3 New Ways to Play</h2>We've scoured the universe of infinite game-modes and we thought these were the most fun ways to demolish the fabric of space-time, and involved the fewest subatomic-combustions and/or lizard-people uprisings.<h2></h2><h2></h2><table><tbody><tr><td><img src="https://img.itch.zone/aW1nLzc1NTI4OS5wbmc=/original/%2Focu72.png" loading="lazy"><p><br></p>
<h2>Dive</h2><p>Your trails make the map: each round you dive and spiral deeper into the lattice of lines you build.</p></td><td><img src="https://img.itch.zone/aW1nLzc1NTI5MC5wbmc=/original/BndVP6.png" loading="lazy"><p><br></p>
<h2>Chaotic Anomaly</h2>Rapid-fire rounds in a shifting arena where trails accelerate after each bounce and insta-kill.</td><td><img src="https://img.itch.zone/aW1nLzc1NTI5MS5wbmc=/original/Avrgbj.png" loading="lazy"><p><br></p>
<h2>Galactic Tour</h2>Build a tour from 25 maps, whether it be a 3-round grudge match or a journey across the galaxy and back.</td></tr></tbody></table></li></ul>

<iframe width="720" height="450" src="https://youtube.com/embed/d1k2h0UtKC4?&vq=HD720&rel=0&modestbranding=1&autohide=1&showinfo=0&vq=HD720" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzUyMTQ5OTYucG5n/original/KQEPpz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk3OS5wbmc=/original/MC0bSq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk3OC5wbmc=/original/G0YLZy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4MC5wbmc=/original/REAW1J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4MS5wbmc=/original/iegn8I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4Mi5wbmc=/original/3czzOo.png]]
<p>&nbsp;One day, Lumi the mermaid visits a new underwater town where seemingly nobody believes in mermaids. Determined to prove true mermaidhood, Lumi sets out to collect mermaid artifacts from the surrounding area. Lumi is joined by Toivo, who might also be a mermaid.<br><strong></strong><strong></strong><strong><br>Surfacing</strong> is a Game Boy-style RPG in terms of color depth and screen size. Just pretend the resolution never changes due to text boxes, menus, or combat.<br><br>This game was made with RPG Maker 2003.<br>Expected playthrough time: 45-90 minutes.</p>
<p>Made for Leeble Game Jam 6, October 2020.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzAucG5n/original/Q3Vd2k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzIucG5n/original/QgI3c7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzQucG5n/original/xI786a.png]]
<p><strong>Calling all pilots: Earth is under alien attack!</strong><br>Your assistance is required! No experience necessary.</p>
<p><img src="https://img.itch.zone/aW1nLzIxNjk2MTcuZ2lm/original/YsdXBj.gif" loading="lazy"><br></p>
<h2>ONE BUTTON:</h2>
<p>Piloting an advanced star fighter with just one button is simple: you switch, you shoot. Every shot fired changes your direction, and mastering this is the key to becoming a legend among the stars. Timing is everything!</p>
<h2>QUICK. SIMPLE. CHALLENGING:</h2>
<p>Don't underestimate its simplicity; this game tests your reflexes like no other! And while your ship might become stardust in a matter of seconds, you can instantly jump back in for "just one more go".</p>
<h2>RETRO ARCADE FEEL:</h2>
<p>A love letter to arcade classics with crunchy pixel art, chiptune soundtrack, authentic cabinet artwork and compulsive gameplay. Only now you don't need a stack of coins to stand a chance at getting a High Score.<br></p>
<h2>COLOUR PALETTES:</h2>
<p>Unlock 64 palettes that completely change the look of everything in the game. Choose from 8-bit favourites or create your own!<br></p>
<h2>PORTRAIT MODE:</h2>
<p>At the touch of a button your screen rotates into portrait mode (a.k.a. TATE Mode) for a truly authentic arcade experience. The game supports a wide range of controller setups so how you play is up to you.</p>
<figure><img src="https://img.itch.zone/aW1nLzIxNjk3OTkuZ2lm/original/5jSarw.gif" loading="lazy"><br></figure>
<hr>
<h3>This <em>itch.io</em> pack includes:</h3>
<ul><li>Standalone DRM-free versions for Windows, Mac and Linux.</li><li>Ad-free Android version.</li><li>Free Steam key.</li></ul>
<p><a href="http://store.steampowered.com/app/498470" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODM3MjAucG5n/original/rlJlAW.png" alt="Steam key included" title="Steam key included" loading="lazy"></a></p>
<p><strong>Current version:</strong>&nbsp;1.3.2<br>26th September 2019</p>
<hr>
<p><strong><a href="https://www.patreon.com/mattglanville" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzIyNDIyNDIucG5n/original/4ubcci.png" loading="lazy"></a><br></strong></p>
<p><strong>Available to&nbsp;<em>Eggs Benedict</em>&nbsp;tier&nbsp;Patrons!</strong><br></p>
<ul><li><a href="https://www.patreon.com/bePatron?u=347796" target="_blank" rel="nofollow noopener">Become a Patron now!</a></li><li>Already a&nbsp;Patron?&nbsp;<a href="https://crowbarska.itch.io/switch-n-shoot/patreon-access">Claim access here</a>.<em></em></li></ul>
<p><br></p>
<p><a href="https://crowbarska.itch.io/" target="_blank"><img src="https://img.itch.zone/aW1nLzM1ODM4MTMucG5n/original/iaGw%2B0.png" alt="More of my games" title="More of my games" loading="lazy"></a></p>
<p><a href="https://www.mattglanville.com/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzIyNDQyNDQucG5n/original/RjA5bM.png" alt="My Website" title="My Website" loading="lazy"></a></p>
<figure><a href="http://eepurl.com/gv2FRT" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzIyNDc1MDEuZ2lm/original/xiCtfn.gif" alt="Join my Mailing List!" title="Join my Mailing List!" loading="lazy"></a></figure>
<p class="text-center">
<a href="https://discord.gg/zCyJuy8" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODMyMDcucG5n/original/Pip41P.png" alt="Discord" title="Discord" loading="lazy"></a> 
<a href="https://www.facebook.com/switchnshoot" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODM2MzkucG5n/original/LHbD6L.png" alt="Facebook" title="Facebook" loading="lazy"></a> 
<a href="https://www.patreon.com/mattglanville" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODMyNzYucG5n/original/VFEKFs.png" alt="Patreon" title="Patreon" loading="lazy"></a> 
<a href="https://store.steampowered.com/developer/mattglanville" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODk1NzYucG5n/original/WIUeao.png" alt="Steam" title="Steam" loading="lazy"></a> 
<a href="https://twitter.com/crowbarska" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODMyMDIucG5n/original/Yn3e6d.png" alt="Twitter" title="Twitter" loading="lazy"></a> 
<a href="https://www.youtube.com/user/crowbarska/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1ODMyMDAucG5n/original/1uoG9V.png" alt="YouTube" title="YouTube" loading="lazy"></a>
</p>
<p class="text-center"><a href="https://www.mattglanville.com/switch-n-shoot-presskit.html" target="_blank" rel="nofollow noopener"><strong>Presskit</strong></a></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/mLkIpi48k9E" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTY0OS5naWY=/original/w5uy2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTcwNy5naWY=/original/7YN%2BAr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTcyNS5naWY=/original/kFbIpi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTc0OC5naWY=/original/ZnvOBu.gif]]
<p><em>When the visitors first came, they said they were coming in peace. When the first disappearances were reported, we didn’t want to believe it. We were too blinded by their technology, their superior intellect, everything they could offer us.</em></p>
<p><em>When the inevitable attack came, it was quick, brutal and devastatingly effective. They knew all our weaknesses by then. All our defences were wiped out in seconds.<br>In the days that followed, in the shadows of the flames, we came together. We got organized, and now we are bringing the fight to them.</em></p>
<p class="text-center">* * *</p>
<p>T-DEF is a GMless game that comes in two 8-page mini zines: the Tactical Handbook that contains the rules for character creation and taking actions; and the Operations Manual, that contains everything you need to create missions for your troopers.</p>
<p>The game is a homage to XCOM by way of Dark Fort and Mörk Borg.</p>
<p>The game comes in both screen readable PDF:s and one-page printable files that you can cut and fold to have physical booklets. Put this in your pocket, wallet or purse with a couple of dice and a pen, and you're always ready to go on a bug-hunt!&nbsp;Play alone or with friends, in between slots at cons, on the bus, or over beers at the pub (you know, after the pandemic is over).</p>
<p>Made using <a href="https://starwest.itch.io/">Star West</a>'s <a href="https://starwest.itch.io/one-page-zine-template">One Page Zine Template</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODAuanBn/original/7T0DK1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODEuanBn/original/NaH%2B6N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODIuanBn/original/W5Hby9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4OTYuanBn/original/osca8e.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4NzkuanBn/original/q7i4BL.jpg]]
<p><a href="http://www.TabletopMusic.com" rel="nofollow noopener">www.TabletopMusic.com</a> is an easy way to bring original background music to your tabletop game sessions!</p>
<p>This pack contains the audio files&nbsp;for all 48 tracks in the collection!</p>
<p>Consider supporting the site so it can continue to grow:<br><a href="https://www.patreon.com/tabletopmusic" rel="nofollow noopener">https://www.patreon.com/tabletopmusic</a><br><br>Follow my work as a game OST composer!<br></p>
<p>SoundCloud:&nbsp;<a href="https://soundcloud.com/alecshea" rel="nofollow noopener">https://soundcloud.com/alecshea<br></a>BandCamp:&nbsp;<a href="https://alecshea.bandcamp.com/" rel="nofollow noopener">https://alecshea.bandcamp.com/</a><br>Twitter:&nbsp;<a href="https://gate.sc/?url=http%3A%2F%2Ftwitter.com%2FSlaleky&amp;token=34ef52-1-1592041901391" target="_blank" title="http://twitter.com/Slaleky" rel="nofollow noopener">twitter.com/Slaleky</a><br>Facebook:&nbsp;<a href="https://gate.sc/?url=http%3A%2F%2Fwww.facebook.com%2Falecsheamusic&amp;token=e51283-1-1592041901392" target="_blank" title="http://www.facebook.com/alecsheamusic" rel="nofollow noopener">www.facebook.com/alecsheamusic</a></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/C04d8vMqGCg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzM2NTMyODQuanBn/original/dJp5HN.jpg]]
<p><strong></strong>Cheerful slacker Olive thought that taking an outdoor ed. class during her final year of high school would be an easy credit, but the year-end camping trip turns out to be a lot more than she bargained for. When an argument with another classmate spurs the hot-tempered Sage to run off alone into the woods, Olive follows her, hoping to lift her spirits and make sure she’s safe. But the bubbly and energetic Heather has the same idea, and tensions between her and Sage threaten to turn the trip into even more of a disaster than it is already. Olive just wants her classmates to get along, but they seem to disagree on everything—and to make things even worse, they’ve lost track of how to get back to their campsite! Follow three stressed-out teens on a journey full of bickering, mosquitoes, and self-discovery.</p>
<p><em>Take A Hike! </em>takes approximately 30-45 minutes to read, and includes audio captioning and adjustable textbox opacity for accessibility (available in the preferences menu). It<em> </em> also contains some strong language, brief references to drug use, mildly sexist remarks, and characters generally being grumpy and rude to each other a lot.</p>
<p>All character sprites used in Take A Hike! are available for purchase from <a href="https://dejinyucu.itch.io/">DejiNyucu</a>! You can get them and use them in your own game! <a href="https://parttimestorier.home.blog/take-a-hike-credits/" target="_blank" rel="nofollow noopener">Full credits here.</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDYucG5n/original/RExJf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDgucG5n/original/vIY1b%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDcucG5n/original/86qS77.png]]

<p><strong>🌱&nbsp;&nbsp;a solo or with friends&nbsp;tabletop farming game 🌱</strong></p>
<p><strong>What you need to play: </strong>pencil and paper (or google docs/other note taking app if you prefer)&nbsp;&nbsp;and a six sided die.&nbsp;</p>
<p><strong>What you can do:&nbsp;</strong><br></p>
<ul><li>Tend to your farm&nbsp;🌾</li><li>Visit the town&nbsp;🏘️</li><li>Take on the Dungeon Keep&nbsp;⚔️</li><li>Go to the forest&nbsp;🌲</li><li>Go on dates&nbsp;💖</li><li>Try to win the harvest festival&nbsp;🏆</li></ul>
<p>🌺&nbsp; &nbsp; &nbsp;🌺&nbsp; &nbsp; &nbsp;&nbsp;🌺&nbsp; &nbsp;&nbsp;🌺&nbsp; &nbsp; &nbsp;🌺&nbsp; &nbsp; &nbsp;&nbsp;🌺&nbsp; &nbsp;&nbsp;🌺&nbsp; &nbsp; &nbsp;🌺&nbsp; &nbsp; &nbsp;&nbsp;🌺&nbsp; &nbsp;🌺&nbsp; &nbsp; &nbsp;🌺&nbsp; &nbsp; &nbsp;&nbsp;🌺<br></p>
<p>Thanks to <a href="https://creators.kickstarter.com/zine-quest/" style="font-size: inherit" rel="nofollow noopener">Kickstarter's #ZineQuest</a>, <a href="https://www.kickstarter.com/projects/1351238692/take-root-perennial-edition-0" style="font-size: inherit" rel="nofollow noopener">this new version</a> of <a href="https://magicalbitch.itch.io/take-root" style="font-size: inherit">take root</a> was fully funded! The release was delayed, but if you were not able to purchase it originally on kickstarter, you can now get it by purchasing on itchio. It includes:<br></p>
<ul><li>A 16 page PDF of the game&nbsp;</li><li>A printable booklet version of the game&nbsp;</li><li>A Mini Zine with expanded romance options&nbsp; (available as 8 pg pdf or foldable)</li><li>Another Mini Zine with a new shop keeper and dungeon keep boss expansion&nbsp;(available as 8 pg pdf or foldable)</li></ul>
<p>If you'd like to play an earlier version of this game, you can play <a href="https://magicalbitch.itch.io/take-root">the original pamphet version of the game here.&nbsp;</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODUucG5n/original/KzAOJv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODQucG5n/original/sa%2Biac.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODcucG5n/original/LT0%2Ftd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODYucG5n/original/qbyzhG.png]]
<div style="margin: 0 auto; max-width: 600px">
<p class="text-center"><strong>From the creator of <a href="https://boyproblems.itch.io/boy-problems" target="_blank">Boy Problems</a>, <a href="https://boyproblems.itch.io/black-heart" target="_blank">Black Heart</a> <br>&amp;&nbsp;<a href="https://boyproblems.itch.io/in-case-of-an-emergency" target="_blank">In Case of an Emergency</a>...</strong></p>
<p class="text-center"><strong><em>The sun sets on an adventure and there is a moment to pause and reflect on everything that came before.<br></em></strong><strong><em>A group sits around a campfire before they have to say goodbye to one of their friends.&nbsp;<br></em></strong><strong><em>A lone hero rests in the shadow of the construct that could lead to their own demise.</em></strong></p>
<p class="text-center"><strong><em>Tales’ End</em></strong> is an improvisational game about a group (or individual) remembering the journey that brought them here and reflecting on how they and the world around them have changed. Designed to open up a dialogue with prompts, the game guides players to experience an entire adventure through vignettes on the eve of the end of their travels.</p>
<p class="text-center">The game is genre-agnostic, GM-less, and can also be experienced as a solo journaling exercise. It is intended to provide a streamlined experience for beginners, or a unique experience for established groups. The direction of the story is up to the players, with a system of prompts to provide guidance and tools to keep moving forward.</p><p class="text-center"><strong>Creator's Note</strong>: <em>This game is a bit different from my past releases! It is very mechanics light and focused on storytelling and improvisation. It is a bit of an experiment and priced as such. I hope that it can help those new players&nbsp;who might feel intimidated getting into tabletop, or for those looking for a solo experience.</em><br></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMTkyMTcucG5n/original/uxmkQ0.png" loading="lazy"><br></p><p class="text-center"><a href="https://www.dicebreaker.com/games/tales-end/news/tales-end-rpg-released" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQzMzIwMTkucG5n/original/ne90un.png" loading="lazy"></a><br></p>
<figure><img src="https://img.itch.zone/aW1nLzQzMTkyMTAucG5n/original/t0DjmU.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMTkyMTgucG5n/original/vE82vp.png" loading="lazy"><br><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMTkyMjAucG5n/original/tgdNLC.png" loading="lazy"><br></p>
<p><br><br></p>
</div>

[img width=500 [https://img.itch.zone/aW1nLzQzMTkyNDIuanBn/original/QWdRd%2B.jpg]]
<p><strong>What is Talk To Me?</strong><br></p>
<p>Talk To Me is a Western-style Visual Novel. It’s a Dating Sim--kind of--but also, maybe you shouldn’t play it like that.*<br></p>
<p>You play as Ordell Harrison, a guy in his twenties who is just trying to get through the day. After his mother dies, Ordell moves to a different town to start over, but things don’t seem to be getting any better for him. </p>
<p><em>* Talk to Me is a Visual Novel about grief, mental health and friendship intended for audiences over the age of 18. Please note there are no explicit images in the game. This can be a hard game to play if you’re depressed or have just lost someone close to you, so please be aware of that, along with the trigger warnings that have been posted at the end of the post. These can be spoilery, so please skip them if you would rather not know what they are. </em></p>
<p><strong>Features:</strong></p>
<ul><li>There are no 100% good or bad endings in this game. You won’t get a game over. There’s no true ending either</li><li>Over 75k words of story, with difficult choices and consequences</li><li>A vibrant cast of characters</li><li>Explore up to 20 different outcomes of the game. See how your choices have affected Ordell’s life</li><li>25+BGs and 10+ CGs</li><li>This game is both BxG and BxB<p></p></li></ul>
<p><img src="https://img.itch.zone/aW1nLzkzMjY4NS5qcGc=/original/C5vafJ.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjY4Ni5qcGc=/original/GQEUec.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcyMC5wbmc=/original/%2Bh7DUA.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcxOS5qcGc=/original/%2BmoIfD.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcyOS5qcGc=/original/%2F%2BLTOR.jpg" loading="lazy"></p>
<p class="text-center"><a href="https://i.imgur.com/Ho9RJkv.jpg" target="_blank" rel="nofollow noopener">Trigger warnings for the game. Contains spoilers.</a></p>
<p class="text-center">Do you want to give us feedback? Comment here or go on Twitter using the hashtag <a href="https://twitter.com/search?q=talktomevn" rel="nofollow noopener">#TalkToMeVN</a>!</p>
<p><strong>Known Bugs:</strong><br></p>
<ul><li>Music Captions may sometimes show the wrong name for the song currently playing.</li></ul>
<p><em>Update 1.03 published on 10-20-2020.</em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3ODkucG5n/original/H%2B6LUx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3OTAucG5n/original/J4RoQG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3OTEucG5n/original/TIOJil.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3NjIucG5n/original/ewcFmt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3NjAucG5n/original/eHGfRs.png]]
<p>Give your brain the next big challenge with "<strong>Tap Strike BOOM!</strong>"</p>
<p>Your goal is to go through the "<u>Mystical Gate of the Heavens</u>", but it won't just let anyone in!</p>
<p>Heavily influenced by the '<em>Voltorb Flip</em>', a minigame in the <em>Pokemon</em> series, <strong>Tap Strike BOOM!</strong> challenges yo to solve the puzzles that the gate will throw at you. You will have 10 levels that will get more difficult as you advance!</p>
<p>Clear each level by finding a number of crystals, but only Double and Triple Crystals will do! If you find a bomb, you will lose a life!</p>
<p>Can you find out what's behind this gate?</p>
<p><u>Features:</u></p>
<p>- Challenging mechanics that will make you use the old noodle!</p>
<p>- Beautiful pixelated graphics.</p>
<p>- Haunting chiptune music and 16-bit sound effects.</p>
<p><br></p>
<p><u>This game can be played on Windows tablets as well</u>! :)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAxLmpwZw==/original/pX6HXU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAyLmpwZw==/original/5fHSW9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAzLmpwZw==/original/lTBDWY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODA0LmpwZw==/original/3gVnj7.jpg]]
<p>Tapioca Rider is a 2D dessert driving game.</p>
<p>Jump, accelerate, and occasionally reverse through 78 tracks of procedural love and hate. Complete them without crashing or landing upside-down to attain the purpose of all gaming: a score.*</p>
<p>Then drive through another&nbsp;9921 tracks if for some reason that wasn't enough.</p>
<p>Be you a Tapioca Rider?</p>
<p><br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/njBaMgJB6R0" frameborder="0" allowfullscreen=""></iframe></div>
<p><br></p>
<p><br></p>
<p>*&nbsp;ᴾᵘʳᵖᵒˢᵉ ᵒᶠ ᵍᵃᵐᶦⁿᵍ ᵐᵃʸ ⁿᵒᵗ ᵃᶜᵗᵘᵃˡˡʸ ᵇᵉ ᵗᵒ ᵍᵉᵗ ᵃ ˢᶜᵒʳᵉ ᶦⁿ ᶜᵉʳᵗᵃᶦⁿ ᵗᵉʳʳᶦᵗᵒʳᶦᵉˢ&nbsp; ᴾˡᵉᵃˢᵉ ᶜᵒⁿˢᵘˡᵗ ʸᵒᵘʳ ˡᵒᶜᵃˡ ᵍᵃᵐᶦⁿᵍ ᵒᵖᶦⁿᶦᵒⁿ ᵗʳᵘᵐᵖᵉᵗ ᶠᵒʳ ᶠᵘʳᵗʰᵉʳ ᵃᵈᵛᶦᶜᵉ</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/njBaMgJB6R0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk4Mjc5LzE0NTg2NDkuZ2lm/original/IFi6eV.gif]]
<p><em>Will you form a covenant?</em><br>
<br>
It's a drag working over the weekend but putting in the extra effort may move you one step closer to a coveted promotion. You wouldn't describe your job as a “dead end" but you could certainly use more money and, frankly, something more interesting to do. Hopefully this all pays off. Hmm? What's that sound?<br>
<br><em>
Your phone is buzzing.</em><br>
<br>
Technoccult: Covenant is a short form interactive fiction game inspired by PC-98 era visual novels, the Shin Megami Tensei franchise, and psychopunk classics like Boogiepop Phantom and Serial Experiments Lain. Can you find all three endings?<br>
<br>
The original soundtrack, <a href="https://egardepe.bandcamp.com/album/technoccult-covenant-ost" target="_blank" rel="nofollow noopener">which you can find here</a>, uses the sounds of the Yamaha YM2608 and Roland JX-305 to emulate the textures of the PC-98 and early 90s electronic music. The recording draws inspiration from the works of Ryu Umemoto and Shoji Meguro in an attempt to articulate sonic aspects of the psychopunk aesthetic.</p>
<hr>
<p><em>
Scenario, Design, and Programming</em><br><a href="https://twitter.com/egardepe" target="_blank" rel="nofollow noopener">Eliot Gardepe</a><br>
<br><em>
Music</em><br><a href="https://twitter.com/egardepe" target="_blank" rel="nofollow noopener">Eliot Gardepe</a><br>
<br><em></em><em>Playtesting</em><br><a href="https://twitter.com/ali_west" target="_blank" rel="nofollow noopener">Alicia Acampora</a>, <a href="https://twitter.com/technascent" target="_blank" rel="nofollow noopener">John Evanofski</a>, and <a href="https://twitter.com/rogergoodman" target="_blank" rel="nofollow noopener">Roger Goodman</a><br>
<br><em>
Special Thanks</em><br><a href="https://twitter.com/rogergoodman" rel="nofollow noopener">Roger Goodman</a>, <a href="https://twitter.com/materialdesignr" target="_blank" rel="nofollow noopener">Chris Hendrix</a>, and <a href="http://renpy.org/" target="_blank" rel="nofollow noopener">Ren'Py<br><br></a>This work is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/" style="font-size: 15px; background-color: initial" rel="nofollow noopener">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzIucG5n/original/YFjUk5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzMucG5n/original/B%2FwqXg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzQucG5n/original/M1yXt2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzUucG5n/original/i8xuYk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzYucG5n/original/alvZ6c.png]]
<p><em>Fate comes for all, even for legendary Heroes...</em><br></p>
<p>You are a demi-god, using your powers to make a difference in the world - but <strong>your death has been prophesied</strong> <strong>by The Fates</strong>, and each breath moves you closer to the end of your journey.</p>
<p>How will you spend your last days? Will your legend be remembered?</p>
<p><strong><em>TERMINUS - The Final Journey Of A Legendary Hero</em></strong> is a solo journaling RPG about performing heroic deeds and making peace with one's death.</p>
<p>This game is inspired by Greek Mythology, epics and tragedies (and Disney’s Hercules).</p>
<p><strong>Content Warning:</strong> Enclosed inside, you will find themes that relate to fear, isolation, despair, violence, the inevitability of death, and facing one’s regrets and mistakes.</p>
<p>_____________&nbsp;</p>
<p><br>
This game was created for the “<a href="https://itch.io/jam/wretched-jam">Wretched &amp; Alone Jam</a>”, and was directly inspired by <a href="https://loottheroom.itch.io/wretched">“The Wretched”</a>, by Chris Bissette, by “<a href="https://sealedlibrary.itch.io/wretched-alone-srd">The Wretched &amp; Alone SRD</a>”, and by Litza’s “<a href="https://litzabronwyn.itch.io/make-a-wretched-game">Make a Wretched Game</a>”</p>
<p>_____________</p>
<p>Also check out our previous #WretchedJam entries:&nbsp;</p>
<ul><li><a href="https://catscratcher.itch.io/operation-swordbreak"><strong>Operation Swordbreak</strong></a> - A sci fi espionage thriller about trying to stop an evil galactic Regime!</li></ul>
<ul><li><a href="https://catscratcher.itch.io/murder"><strong>Murder!</strong></a> - A murder mystery in which you are the only one capable of catching a killer before you become one of their victims!</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDAucG5n/original/4mrI1f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDEucG5n/original/Vt9m%2FS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDIucG5n/original/dzku%2FC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDMucG5n/original/oaaqeA.png]]
<p>Terroir is a 3D tile-based tycoon game where you manage your very own vineyard. In Terroir, you grow a variety of different grape varietals, craft your wine, and expand and manage your Estate. You'll also have to deal with factors such as weather and random events, which can either make or break your business.<br></p>
<h2>Features</h2>
<p>Some of the game's features and mechanics include:</p>
<ul><li>Choose from a selection of different grape varieties, each with their own demands.<br>
</li><li>Dynamic weather system reflecting the unpredictability of real world climate.<br>
</li><li>Each complete playthrough lasts 60 in-game years, but Players can continue playing without contributing to their final score.<br>
</li><li>Craft wine through the game's 4 winemaking processes: Crushing, Fermentation, Pressing and Ageing. Each type of grape needs to be crafted a certain way to achieve the best results, so you'll have to learn and master each one.<br>
</li><li>Start out with a single planting tile, then expand your Estate to up to 33 tiles, using 6 different tile types. Some tiles affect the ones around it, so placement is key.<br>
</li><li>Customize your estate with ambient items.<br>
</li><li>CHANCE &amp; CIRCUMSTANCE: Terroir's random event and mission system. Players can open the Mystery Box and choose between CHANCE (a random event that could either have a positive or undesirable outcome) or CIRCUMSTANCE (a mission that a Player completes for rewards, or gets penalized for failing).<br>
</li><li>Join Wine Awards for a chance to earn bonuses to your wine's value and your Estate's renown.<br>
</li><li>Clean, minimalist design and gorgeous low-poly 3D models.<br>
</li><li>Original soundtrack composed and performed by Singapore's CLARQuinet ensemble.
</li></ul>
<p>Put on your field gloves, grab a pair of pruning shears and build your Chateau literally from the ground up. Good luck, and cheers!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/Ifr_e1NeSlI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg2LmpwZw==/original/Dz3krS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTgyLmpwZw==/original/G23wwL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTgzLmpwZw==/original/iy0GxF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg3LmpwZw==/original/2Byd9r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg0LmpwZw==/original/DNyIsr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkxLmpwZw==/original/MzISC1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg1LmpwZw==/original/Hw9siT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg5LmpwZw==/original/16aHRo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg4LmpwZw==/original/Ldyxbv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkwLmpwZw==/original/ZMLU%2F%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkzLmpwZw==/original/mpqq1I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkyLmpwZw==/original/CQjrDi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTk1LmpwZw==/original/COMdoh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTk0LmpwZw==/original/MaoZLj.jpg]]

<p>
 <img src="https://media.discordapp.net/attachments/610526036479705103/723769103856304188/ezgif.com-optimize_1.gif" style="width: 100%" loading="lazy">
 <img src="https://media.discordapp.net/attachments/610526036479705103/723029138075811870/autosaver_underbanner.gif" style="width: 100%" loading="lazy"><img src="https://cdn.discordapp.com/attachments/610526036479705103/723806098829738064/looping_big_blockfeatscreenshake.gif" style="width: 96%; margin-left: 2%; margin-right: 2%" loading="lazy"></p>
<table style="width: 100%; border: 0px"><tbody style="width: 100%; border: 0px"><tr><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016616337473565/cropped_bell.gif" style="width: 100%" loading="lazy"></td><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016619957420042/cropped_chick.gif" style="width: 100%" loading="lazy"></td><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016624898310224/cropped_woodpecker.gif" style="width: 100%; border: 0px" loading="lazy"></td></tr></tbody></table>
<p>
<strong><del>WARNING, the Mac OS version requires <a href="https://www.hendrix.edu/HelpDesk/Computers_and_Devices/Mac_Computers/Disabling_and_Enabling_Gatekeeper_for_Mac_OS_X/" target="_blank" rel="nofollow noopener">DISABLING GATEKEEPER</a>&nbsp;&nbsp;to run</del></strong></p>
<p>A simple workaround for the Mac OS is available <a href="https://itch.io/t/1033075/the-super-simple-mac-gatekeeper-workaround">here</a>.</p>
<p>Textreme 2 is also available on <a href="https://store.steampowered.com/app/1516350/Textreme_2/" rel="nofollow noopener">Steam</a>!</p>

[img width=500 [https://img.itch.zone/aW1nLzM5MTg2ODUuZ2lm/original/kawP%2F5.gif]]

<p>An endless war spanning aeons and galaxies, fought with mechs forged from the bodies of gods.&nbsp;</p>
<p>It's up to you and your crew to salvage what you can.</p>
<p class="text-center"><strong>THE GAME</strong></p>
<p>Work as a contractor for Ichor Extractions, Inc. and visit the site of a fallen mech to extract valuable materials and glean as much profit as you can before the work day ends. Gossip with coworkers, rend flesh from the bones of the divine, and try not to piss off your boss.</p>
<p><br></p>
<p class="text-center"><strong>FEATURES</strong></p>
<ul><li>Over 40k words of prose and dialog</li><li>4+ characters with unique backstories and relationships</li><li>10 original illustrations accompanying the story</li><li>Soundtrack &amp; sound design by Austin M.</li><li>Alternate colors to lessen eye strain</li></ul>
<p><strong><br></strong></p>
<p class="text-center"><strong>CONTENT WARNINGS</strong></p>
<p>This game contains&nbsp;<strong>surgery, medical horror, body horror, gore, drowning, being buried alive,</strong> and additional potential triggers.&nbsp;You may not encounter every instance in one playthrough, but please be cautious!</p>
<p><br></p>
<p class="text-center"><strong>ABOUT</strong></p>
<p>This game was my senior thesis project, concluding my Game Design B.F.A. studies. It was made from August 2020 to May 2021 at the&nbsp;Maryland&nbsp;Institute College of Art, and wouldn't have been possible without the support of my department peers and professors.</p>

[img width=500 [https://img.itch.zone/aW1nLzU2OTc0MTMucG5n/original/ud2yCy.png]]
<p>An action platformer game like Super Mario Bros with simple controls and Pixel art. Run, jump, collect stars, solve puzzles and fight your way through&nbsp;an epic adventure.</p>
<p>Omar is a young boy who lives with his father in a small land. Few months ago, Omar saw a strange creature inside the deep forest. Ever&nbsp;since, Omar is afraid to go into the forest and he gets nightmare of that creature everyday. Omar's father wanted him to face his fear. Omar&nbsp;promised to his father that one day he would go into the forest alone.</p>
<p>The Adventurer is a retro, mini, free, handcrafted, 2D game&nbsp;designed to be fun, unique, small &amp; neat that can evoke&nbsp;fond memories and nostalgic experience of veteran gamers!</p>
<p>It is an indie game developed by a solo developer and made with Unity. Most of the assets used in this game are free assets made by many awesome artists, credits are given in game.</p>
<h5>Features:</h5>
<ul><li>Short story driven</li><li>Smooth and fluid gameplay</li><li>Epic action</li><li>Simple controls</li><li>Boss Battle</li><li>Exciting and short gameplay (16 Levels : 2 Chapters)</li></ul><p>Source code: <a href="https://github.com/Fahad-Aameer/The-Adventurer-Source-Code" target="_blank" rel="nofollow noopener">The Adventurer Source Code</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XmNUc96QSKI" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODAucG5n/original/4%2Fxjd9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzcucG5n/original/rkaNaS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzkucG5n/original/tDM2Yu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODEucG5n/original/BbFFZx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzgucG5n/original/SROEkv.png]]
<p>The Adventures of Wolf and Hood - A Jigsaw Tale is a fairy tale story told through 20 beautiful hand illustrated jigsaw puzzles.</p>
<ul><li>Follow familiar fairy tale characters in a brand new adventure</li><li>Choose from six different puzzle sizes, from 24 to 294 pieces</li><li>Progress is saved automatically so you can come back to a puzzle later</li><li>Take your time to admire the completed scenes and zoom in on the details</li><li>Subtle animated elements bring the scenes to life as you play</li><li>Read the whole completed story in Gallery Mode, like a real picture book</li></ul>
<p><br></p>
<p>Please note: the Mac and Linux builds are experimental, as I am unable to test them personally.&nbsp; As such I cannot offer much support for the Mac or Linux builds. &nbsp;I make them available here for completeness but offer the following warnings.</p>
<p>The Mac package isn't notarized by Apple so you may get a warning when launching it, or you may not be able to launch it at all (it seems to work better when using the itch app rather than downloading it directly).&nbsp;&nbsp;</p>
<p>The Linux version may require additional steps to get it to work but I assume that as a Linux user you will know what to do.&nbsp;&nbsp;</p>
<p>If any of&nbsp;that concerns you then please ensure that you can play the game on Windows before purchasing.&nbsp; Thank you for understanding.&nbsp;</p>
<p><br></p>
<p>Please also note that the Steam key is for the 64 bit Windows version only, for the same reasons as above.</p>
<p><br></p>
<p>This game supports screen aspect ratios from 4:3 up to 21:9, although it is optimised for 16:9.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/c_TRx_qyuM8" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/0fHxNpfCVFI" frameborder="0" allowfullscreen=""></iframe></div>
<p>
</p>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/5W2X14DWdYg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/jFZO3xnA6Eg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/974Abq7OteM" frameborder="0" allowfullscreen=""></iframe></div>

<iframe width="720" height="450" src="https://www.youtube.com/embed/c_TRx_qyuM8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzIuanBn/original/6l%2BEym.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzMuanBn/original/mJuTkb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzYucG5n/original/qbkPMu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzQucG5n/original/6E%2BxZ6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzUucG5n/original/IiEB00.png]]
<p>&nbsp;In
downtown Olympia, just off Jefferson between 4th and 5th, an artesian
well is ever flowing. They say that if you drink of its waters, your
soul will be tethered here. Though you may leave Olympia for days or
months or years, the story goes, something will always bring you
back.</p>
<p>In this game you will make a small map of your own Olympia. You will fill it with memories and friends. You will decide if you really want to come back. This town meant something to you. Maybe it still does.</p>
<p>Written for <a href="https://itch.io/jam/folklorejam2020">Folklore Jam 2020</a>.<br><br></p>

[img width=500 [https://img.itch.zone/aW1nLzQxNjQ3MTMuanBn/original/d3Fwqs.jpg]]
<h1><u>The Bonds That Tie Us&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u></h1>
<p><strong>The Bonds That Tie Us</strong> is a <strong>GMless TTRPG</strong> about characters, and their relationships with each other; how they grow and how they fall apart.</p>
<p>Will the two best friends remain as close as they are? Will the newly formed polycule stay together? Will the rivals ever make peace with each other? Over the course of a few Chapters, such questions may be answered.</p>
<p>It is designed for <strong>3-5 players</strong>, though it can also be used as a solo storytelling tool. To play, you only need <strong>six-sided dice</strong>, <strong>character sheets</strong>, <strong>something to write with</strong>, and a <strong>willingness to make things complicated</strong>.</p>
<p>The free abridged pdf is 2 pages long.</p>
<p>The full pdf is 15 pages long, including the character sheet, and&nbsp;12 pages explaining how to play.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDI4MDUzLzIxMzkzMDQucG5n/original/CdbXsG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4MDUzLzIxMzkzMjAucG5n/original/37Asy1.png]]
<p>A gm-less map making game for 1 to 5 players.</p>
<p>You are a monster who lives in the shadows and caverns of an enormous structure,&nbsp; a tower&nbsp;that reaches down, down into the earth.</p>
<p>Each layer of the tower was once the uppermost - as you ascend, you will learn of the history of this place that once was yours, and how it was ruined, or abandoned, or forgotten.</p>
<p>Inspired by&nbsp;<em><a href="https://buriedwithoutceremony.com/the-quiet-year" rel="nofollow noopener">The Quiet Year/The Deep Forest</a></em>, <a href="https://mouseholepress.itch.io/the-underditch"><em>The Underditch</em></a>,&nbsp;<em><a href="http://dungeon-world.com/downloads/" rel="nofollow noopener">Number Appearing</a></em>,&nbsp;<em><a href="https://www.drivethrurpg.com/product/127180/Scarlet-Heroes" rel="nofollow noopener">Scarlet Heroes</a></em>, and <a href="http://friendsatthetable.net" rel="nofollow noopener">Friends at the Table</a>.</p>
<p>A submission to <a href="https://itch.io/jam/mapemounde2019">Mapemounde 2019</a>.&nbsp;</p>
<p>The background image is&nbsp;<em>Hadley Castle, Near the Nore</em>, by David Lucas, and the cover image is&nbsp;<em>The Course of Empire - Desolation</em>, by Thomas Cole, both in the public domain.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNjAucG5n/original/YdYn98.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTMucG5n/original/43JNzL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTQucG5n/original/hMW9t8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTUucG5n/original/a0Feg3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTYucG5n/original/QgQS64.png]]
<h1><img src="https://img.itch.zone/aW1nLzQ1OTE1MTAuZ2lm/original/Ob0gZu.gif" loading="lazy"></h1>
<h1>ON THE STREETS OF&nbsp;WESTMINSTER, LONDON</h1>
<p><em>The Change Architect is a choice-driven protest simulator. With live camera feeds, an eagle eye view and friends on the ground, it's up to you to co-ordinate the safety and effectiveness of your demonstration from those who would look to do more than just disperse it.</em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener">
<br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MjE4MzUucG5n/original/5CzavF.png" loading="lazy"></p>
<h4>A SHORT GAME BY DE FAULT&nbsp;&amp; CHARD</h4>
<p>Hundreds of thousands of people have amassed in London, as&nbsp;Baron Sugar is attempting to seize control of the country.</p>
<p><del></del></p>
<p><del></del></p>
<p>When faced with police rioting, provocateurs, and&nbsp;eventually the military, can you&nbsp;successfully resist?</p>
<p>This is a single, film-like&nbsp;scene. You decide Jemima's actions as she directs the crowd from above the streets, as well as directing the camera shots between the cinematic angles available.</p>
<p>The fifth&nbsp;of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Struggle with a timely political conflict.</li><li>Choose your own: what do your decisions say about you?</li><li>Direct the camera to shoot the story&nbsp;<em>your</em>&nbsp;way.</li><li>Lose yourself in surreal colours.</li><li>Enjoy a moving&nbsp;<span class="">score</span>&nbsp;by Richard Campbell.</li><li>A tight, intense 10 minutes.</li></ul>
<h4>OTHER GAMES IN THIS SERIES</h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect">The Change Architect</a></li></ul>
<p><a href="https://farfewgiants.itch.io/change-architect"></a></p>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard &amp; mouse only</p>
<p>Left &amp; right arrows / A &amp; D / Num 1-6&nbsp;- change camera<br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Intense scenes, violence, police brutality</p>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our&nbsp;<a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener">Patreon</a>&nbsp;subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon,&nbsp;Itch &amp; Steam.</p>
<p>de Fault: <a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener">@antony_de_fault</a> &nbsp;&nbsp;|| &nbsp;&nbsp;Chard: <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener">@animtree</a></p>
<p>Richard Campbell: <a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener">@ziggidybang</a></p>
<p>Special thanks to our advance testers.<br></p>
<p>For youtubers, streamers &amp; press - <a href="https://drive.google.com/drive/folders/13V4mNnK8bY4MQb3Zgd8Jl28yWqRvgLto" rel="nofollow noopener">Presskit</a></p>
<p>
</p>
<p><img src="https://img.itch.zone/aW1nLzM1Mjc1NDAucG5n/original/uBpYKi.png" loading="lazy"><iframe src="https://store.steampowered.com/widget/1466290/" width="646" height="190" frameborder="0"></iframe></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/690oKppB6WM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MjgucG5n/original/g5hn1Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzEucG5n/original/v%2BZaOs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MjkucG5n/original/CuE3QX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzIucG5n/original/VFtbvc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzAucG5n/original/YFuNis.png]]
<h2>No one is forced to join a cult. It welcomes you. It understands you. It envelops you until the words become more than truth - they make you whole...</h2>
<p><img src="https://img.itch.zone/aW1nLzE1MTA4NDEuZ2lm/original/KCAhpu.gif" loading="lazy"><br><br>In the late 1970s, the charismatic Isaac and Rebecca Walker lead the Collective Justice Mission. Labeled radicals and feeling persecuted by the US government, they relocate their followers to the one place they believe they can create a socialist utopia: the jungles of South America. There they build Freedom Town. But relatives left behind in the US become worried: what exactly is going on at this compound in the jungle?<br></p>
<p>The Church in the Darkness combines unique narrative with tight top-down action-infiltration gameplay in an open-ended environment. As Vic, an ex-law enforcement officer, you travel to South America to get into Freedom Town and check on your nephew, Alex.</p>
<p>Play how you want: you can avoid detection completely, take on the guards using non-lethal methods, or kill anyone who gets in your way. But you'll have to live with the consequences of those choices.   </p>
<p>Every play through offers unique gameplay scenarios and story elements, with different character personalities and a shifting narrative told through investigation and action. You soak up the story through the town PA system, where the preachers share their dogma and beliefs. You find documents and letters scattered around camp which clue you into the true nature of Freedom Town.&nbsp;</p>
<p><img src="https://img.itch.zone/aW1nLzE0NTY5NDEuZ2lm/original/kSedQV.gif" loading="lazy"><br></p>
<p>How dangerous are the Walkers? Who are your allies and enemies? How far will you go to uncover the truth and save these people?<br><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/S6lArVvkujE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTUucG5n/original/LKGv9t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTcucG5n/original/EmwrR2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MzIucG5n/original/Hm5%2Fwi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTgucG5n/original/7iWYiQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MzEucG5n/original/qhuY3T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MjkucG5n/original/%2BgtgS%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTYucG5n/original/OSFVZR.png]]
<p>You are Fr. Salad, the pastor of The Church of Cheesus Crisp. You've been given the holy book to tell each parishioner a parable, a life lesson you might say.&nbsp; Complete each mini-game to give each Food Person a blessing, or let sin prevail. Get the high score and get them warm, fuzzy, good good feels.</p>
<p><em><strong>Note:</strong> This game is part of the <a href="https://itch.io/b/579/locally-sourced-summer-bundle">Locally Sourced Summer Bundle</a>. The price will be reduced once the bundle to encourage sales of the bundle.</em><br></p>
<p><strong>Art:&nbsp;</strong>Rachelle Viola&nbsp;<br><a href="https://rachelleviola.com/" rel="nofollow noopener">Website</a><br><a href="https://twitter.com/drOMGp" rel="nofollow noopener">Twitter</a><br><a href="https://instagram.com/drOMGp" rel="nofollow noopener">Instagram</a><span></span></p>
<p><strong>Programming:&nbsp;</strong>Jordan Ajlouni&nbsp;<br><a href="http://www.jordanajlouni.com/" rel="nofollow noopener">Website</a><br><a href="https://twitter.com/jordanajlouni" rel="nofollow noopener">Twitter</a></p>
<p><strong>Sound:</strong> Corey Chappell&nbsp;<br><a href="https://twitter.com/Snesei" rel="nofollow noopener">Twitter</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4NDAucG5n/original/N0FWnq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzUucG5n/original/ptEZvx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzcucG5n/original/oIH0c0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzgucG5n/original/SSa%2Bht.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzkucG5n/original/BgUiyU.png]]
<p><strong><strong></strong>A two player storytelling game about the last hour of a long journey home.<br></strong></p>
<p><strong>------------<br></strong></p>
<p><strong>The Cloister</strong> is a short, one-session storytelling game for two players. </p>
<p>One person plays <strong>The Pilot,</strong>&nbsp;who is&nbsp;finally&nbsp;in&nbsp;orbit&nbsp;around&nbsp;their home planet&nbsp;after&nbsp;a&nbsp;very&nbsp;long&nbsp;time&nbsp;away.&nbsp;</p>
<p>The other person plays <strong>The Operator</strong>, a stranger on the ground who is trying to help the pilot get home.</p>
<p>The story takes place between the two of you in conversation as you navigate atmospheric reentry and fill the dead air of your radio with stories.<br></p>
<p><strong>------------</strong></p>
<p>Playbook is 10 pages, printable. There are two options - as you'd expect, "TheCloister_double_pages.pdf" is made of two-page spreads, while "TheCloister_single_pages.pdf" is single pages. To play the game you will need one 6 sided die. Games should take between half an hour and an hour to complete (about the length of a real atmospheric reentry).</p>
<p><br><img src="https://img.itch.zone/aW1nLzQwMDE1MjIucG5n/original/az40T9.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQwMDE1MjQucG5n/original/kwLfhD.png" loading="lazy"><br></p>
<p>
</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/fVQd9Ejkbiw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzQwMDE1MjkucG5n/original/OIhZNb.png]]
<p>If you want to Recreate the feeling of a cookout with the folks you love this is the game for you! Make a fun character, share a few drinks with friends, and argue about how to best solve the problems that arise when you get too many family members in the same place!&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1nLzU4MzM5MjUucG5n/original/N4XdPi.png]]
<p>Inspiration is EVERYWHERE, but time isn’t.&nbsp;</p>
<p>The goal of this project is to provide an easy to use, universal combat system for game designers everywhere. <br>If you’re building a new TTRPG and need a combat system, take this one!*&nbsp;</p>
<p>Use all 6 dice in a polyhedral set, one for each of the major stats/events in the game.<br>A simple 4 stat, opposed d20 roll-off system with no list of modifiers, complex spells, or individual weapons to memorize.</p>
<p>Pick up and play format!<br>Designed in 45 minutes on a Game Jam episode of Beholder to No&nbsp;One podcast.<br><br>Dice images provided by <a href="http://fightinchancestudio.square.site" rel="nofollow noopener">Fighting Chance Studio</a><span></span>&nbsp;<br>Listen to the episode where this was designed on <a href="https://open.spotify.com/show/63E8gbMYqWEWxPxoaQW1yt?si=oCH1oM8eT12mwx4JoHXTlA" rel="nofollow noopener">Beholder to No One</a></p>
<p></p>
<p><em>*Credit format: <br>Combat powered by “The Coolest Combat System” <br>Michael J Gibson &amp; Nikki Yager (2021) <br>Creative Commons Attribution 4.0 Int’l License</em><span></span></p>

[img width=500 [https://img.itch.zone/aW1nLzU5NDg3OTIucG5n/original/yYsaFd.png]]
<p><a href="https://www.THECORRIDORthegamethetrailer.com" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzU2MDAxNDUucG5n/original/B2P6zh.png" loading="lazy"></a></p>
<p>THE CORRIDOR is a 20-30 minute experience about the relationship between player and game.</p>
<p><strong>GENRE:</strong><br>• First-person-walking-down-a-corridor-game. ("Wait, isn't that most games?" I hear you ask sarcastically. Not like this. Not like this.)<br><br><strong>KEY FEATURES:</strong><br>• A corridor.<br>• The things found within said corridor.<br><br><strong>GAMEPLAY:</strong><br>• You walk down a corridor. That's it. That's literally it. Don't expect anything more than that, because there isn't!<br>• Probably.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/musVIDA8UkA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwODkucG5n/original/N%2B2I2u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTIucG5n/original/dEaNfS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTMucG5n/original/3j8j3B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTEucG5n/original/c30eVJ.png]]
<p><em>The Isle of Pelursk holds a glowing, steaming, mist-shrouded secret at its heart, and once you’ve entered its clutches it does not want to let you leave.</em></p>
<p>The Corruption of Pelursk is an adventure module,&nbsp;designed to fit easily as a sidequest into an ongoing campaign or stand confidently on its own!</p><p>This adventure features a randomized hexcrawl across an island that seeks to destroy the players; as they explore they will learn the history of the Isle of Pelursk through ruins, hauntings and, as mentioned, island attacks.&nbsp;</p>
<p>This Pocket Dungeon includes: the dungeon zine, a 60 page PDF, and the B&amp;W map, a 11x17 print-at-home black and white map supplied on two 8.5 x 11 sheets, with a set of 12 cut-out hexes, as well as thirteen digital play assets including a colour map and colour hexes provided individually in web-friendly formats for use in online play.</p>
<p>Thematically, this module deals with generational secrets, children in danger, economic anxiety, and so many ghosts.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU0NDcuanBn/original/5Tvd3p.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU0NDkuanBn/original/2vYsV9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTQuanBn/original/9iIXLz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTMucG5n/original/9Hxew5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTUucG5n/original/9aDMGQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTcucG5n/original/r%2BSBFo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTYucG5n/original/X31g0i.png]]
<p>The game is Blackjack, but not as you know it.</p>
<p>The wager is your life, but you do not plan to lose it.</p>
<p><br>Experience a twist on both a classic card game and a classic novel. Amass skills, press your luck, do anything to stay ahead of those who would destroy you once again. Uproot this twisted game and find the revenge you seek!<br></p>
<h2>Features:</h2>
<ul><li>Enjoy a new form of Blackjack where both player and dealer twist the rules</li><li>Delve deep into a corrupt society, growing stronger with each fight. Don't get greedy or all your power will be stripped from you</li><li>Over half an hour of music to accompany your struggle</li><li>Multiple color palettes to choose from</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7AsOkS0ne_I" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwNzkucG5n/original/SaIrXJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODAucG5n/original/BP3VLK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODEucG5n/original/bZFPQp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODIucG5n/original/FeH%2BE0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODUucG5n/original/QFSCpe.png]]
<p class="text-justify text-center">The Crystal Golem is a short but hard action game, inspired by Dark Souls and playing old games without a manual.<br></p>
<p class="text-justify">Will you be able to destroy the corruption from the Void and restore Humankind?</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjczODguZ2lm/original/PiO0l6.gif" alt="Combat" title="Combat" loading="lazy"><br></p>
<p class="text-center"><em>*&nbsp; *&nbsp; *&nbsp; *&nbsp; *</em></p>
<p class="text-justify"><em>Energy born from the Void seeped into the rock and gave it some semblance of life. Humankind tried to harness its power, building wonderful creatures of crystal and light. But, alas, their pride was their undoing.<br>Only one of their machines remains today. It must now descend into the earth and go to the Place Where All is Backwards. It may still have a chance to fix this World...</em></p>
<p class="text-center"><em>*&nbsp;&nbsp;*&nbsp;&nbsp;*&nbsp;&nbsp;*&nbsp;&nbsp;*</em></p>
<ul><li>Three worlds you'll have to fight your way through.</li><li>A retro, PS1-inspired aesthetic.</li></ul>
<p class="text-justify">The controls are listed in the Readme file. Both keyboard + mouse and controller&nbsp; input are&nbsp;supported.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MjAucG5n/original/IdBM5q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MTgucG5n/original/pJC%2Foy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MTkucG5n/original/SmtuNI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MjIucG5n/original/ezh8I%2F.png]]
<p><strong>The demo is discounted! Full game planned ~20$&nbsp;</strong><em>Please follow for future updates :)</em></p>
<p>THE DOOR is an innovative escape room game with teleportation, story and puzzles.&nbsp;<br></p>
<p>"As you go through a door you encounter a&nbsp;beautiful landscape . You meet a confused but friendly robot.&nbsp;It joins you and helps you solve puzzles that&nbsp;&nbsp;that may lead you to the big exit in the sky.”</p>
<p>If you like atmospheric games with story, puzzles and more than one twist - THE DOOR is likely a game for you.<br></p>
<p>Planned launch for PC/Mac, mobile and consoles in 2021.&nbsp;</p>
<p>Wishlist on Steam:&nbsp;<a href="https://store.steampowered.com/app/1360440/The_Door/" rel="nofollow noopener">https://store.steampowered.com/app/1360440/The_Door/</a></p>
<p><br></p>
<p><strong>STORY</strong>&nbsp;<br></p>
<p>Upon discovering and going through a secret digital door, you find yourself trapped in an alternate world together with a slightly needy and flying robot. Guided by the robot, you must find your way home through a series of doors and puzzles leading to the legendary exit in the sky. But, something is amiss: The omnipresent structure floating in the sky seems aware of your presence. What is it's intention, what is it doing here? And where is the way out from here?</p>
<p><br></p>
<p>Looking for publishing and investment.&nbsp;<br></p>
<p>Supported by the Danish Film Institute.<br></p>
<p><br></p>
<p>The builds here on Itch.io is currently a 20 minute demo of the initial gameplay and story, if you'd like to try it out and support our development :)</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pVQLtVllm_Y" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI4MTAuZ2lm/original/4euXQJ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI3OTYuZ2lm/original/DyXgJS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI3NjQuZ2lm/original/CRDVL5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjUucG5n/original/fRpclj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjgucG5n/original/acNQ7G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjkucG5n/original/FFeDy5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjYucG5n/original/7DSiKD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNzAucG5n/original/%2B%2FChxV.png]]
<p><em>You climb aboard the shuttle which is intended to convey you off this dingy planet. Embedded in the metal walls of the shuttle are bones, sun-bleached and carved with innumerable runes of protection. The only seats in the shuttle seem comfortable enough, although they have the familiar texture of human-flesh leather, tattooed over and over in a crabbed, spiky hand. What little is legible is clearly reproductions of necromantic theorems, the very ones which hold your ever-crumbling but never-dying empire together. There is no seat at the control console, merely a severed head, mummified by time, on a pike. Its milky-white eye briefly alights upon you, and the door you entered in slides closed with a distressingly organic sound.&nbsp;</em><br></p>
<p><em>It fucking sucks. Just an abysmal experience, and the chairs make your ass hurt after like ten minutes. But if you’re going to be a necromancer there’s a whole, like, aesthetic to deal with.&nbsp;</em></p>
<p><em>Hope you like skulls, fucker.</em></p>
<h3><em>Welcome to the Empire Undying</em></h3>
<p>There are two sorts of people that matter in the decrepit&nbsp;star empire: the necromancers who create the undead abominations upon whose skeletal backs civilization rests, and the knights whose sword duty is to defend the necromancers from undead abominations which aren't behaving right now.&nbsp;</p>
<p>In this game, you will play a group of necromancers and knights, stuck in some corner of the vast empire, attempting to solve a mystery that is, in turn, attempting to kill you all. The bad kind of "kill," the sort you don't bounce back from. Explore ancient sites and forgotten ruins, unravel conspiracies which have endured for millennia, and make out with one another, because you are&nbsp;<em>hot</em> and&nbsp;<em>hurt</em> and&nbsp;<em>surrounded by bones</em> so you have to get that tension out somehow.&nbsp;</p>
<p><em>The Empire Undying</em> is inspired by <a href="https://us.macmillan.com/series/thelockedtombtrilogy/" target="_blank" rel="nofollow noopener">The Locked Tomb Trilogy</a>, by Tamsyn Muir, and uses some elements from <a href="http://www.onesevendesign.com/laserfeelings/" target="_blank" rel="nofollow noopener">Lasers &amp; Feelings</a>, by John Harper.</p>

[img width=500 [https://img.itch.zone/aW1nLzU3ODc4NjIucG5n/original/AIc1qx.png]]
<p><img src="https://img.itch.zone/aW1nLzEyOTcxOTcucG5n/original/psvdX%2B.png" loading="lazy">All sales will be donated to the trevor project.</p>
<p>It only took a few moments for the feeling of panic to set in. “What if I lived my life wrong? How would I be judged? What if there is nothing after this?</p>
<p>The story begins with an individual, recently deceased, who is struggling to comprehend the reality of being dead. The mind, disconnected and failing, desperately attempts to form some vision of reality. Yet, the memories of its life are only distant whispers. It can't recall a personality, friends, or even an appearance. But there is hope. The memories of the music, the disconnected emotions. And in a rush of information, sometimes there appear memories of her: the rockstar.&nbsp;</p>
<p>The Endless Empty is an adventure RPG with a focus on exploration and choices. The game explores the concepts of death and the afterlife, and takes place in 5 chapters. Each chapter has a different theme and a unique art style. The game takes the player on a branching journey through the unknown. there are a variety of memories to explore; From upbeat suburban neighborhoods, to gritty industrial wastelands, to colorful psychedelic hallucinations.</p>
<p>The game will feature a multilayered storyline with alternative paths and multiple endings as well as a customized battle system. Complementing the game will be a completely original soundtrack with classical, electronic, funk and rock musical styles.&nbsp;</p>
<p>Check our Facebook:&nbsp;<a href="https://m.facebook.com/SugarySweetMachines/?ref=bookmarks" rel="nofollow noopener">https://m.facebook.com/SugarySweetMachines/?ref=bookmarks</a></p>
<p>Check our rpgmaker page:&nbsp;<a href="https://rpgmaker.net/games/9949/" rel="nofollow noopener">https://rpgmaker.net/games/9949/</a></p>
<p>Out on Steam Nov 3rd:&nbsp;<a href="https://store.steampowered.com/app/959410/The_Endless_Empty/" rel="nofollow noopener">https://store.steampowered.com/app/959410/The_Endless_Empty/</a></p>
<p>Twitter: &nbsp;<a href="https://mobile.twitter.com/ErikSheader" rel="nofollow noopener">https://mobile.twitter.com/ErikSheader</a></p>
<p>Requirements:</p>
<ul><li>OS:&nbsp;Windows Xp / Vista / 7</li><li>Processor:&nbsp;Intel Pentium 4 2.0 GHz</li><li>Memory:&nbsp;512 MB RAM</li><li>Storage:&nbsp;880 MB available space</li></ul>
<p>Information on extracting files from zip folder:&nbsp;<a href="https://support.microsoft.com/en-us/help/14200/windows-compress-uncompress-zip-files" rel="nofollow noopener">https://support.microsoft.com/en-us/help/14200/windows-compress-uncompress-zip-f...</a><span></span></p>
<p><img src="https://img.itch.zone/aW1nLzEyOTcxOTgucG5n/original/b4lW%2B%2B.png" loading="lazy"><br></p>
<p>&nbsp;<br>&nbsp;&nbsp;</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OhgE_RLqrUw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDMuanBlZw==/original/jOHMcf.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDQucG5n/original/jO2cal.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTQucG5n/original/89gfpd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTIucG5n/original/lqd9Al.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDUucG5n/original/zFgUkE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDcucG5n/original/xE7rxe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDYucG5n/original/uULxL6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDguanBlZw==/original/HOx4tF.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDkucG5n/original/U88Zpl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTMucG5n/original/%2F3yv0I.png]]
<h4>THE GAME</h4>
<p>The Fall of Lazarus is a first person exploration game set in a science fiction future. You are a crew member of the USSC Lazarus waking up from cryo sleep without memories and even without name in an apparently abandoned drifting cargo spaceship. But you're not alone, there is also Hybris, the Artificial intelligence who commands the ship.</p>
<p>The Fall of Lazarus is a deeply narrative video game. You will have to solve some puzzles and explore in order to advance in the story. The universe and story will unveil branching along the scenary, objects and documents left behind by the people who lived in the Lazarus at some point.<br>In addition if you search and connect the dots maybe a greater puzzle will be revealed and the darker truth around you will become brighter.</p>
<h4>GAMEPLAY</h4>
<p>The Fall of Lazarus is a first person exploration game. There is a main story you'll play but you'll have to search and inspect every detail of the scenary looking for clues, notes, letters and objects and piece by piece gather information about what's happening around you.</p>
<p>There are a lot of mysteries aboard the USSC Lazarus and depends on you how many of them you can resolve along your journey. At the end of it maybe you resolve the bigger puzzle around what's going on. Maybe you're right. Maybe you're wrong. You'll need to have in mind every detail in order to unveil the whole story.</p>
<p>You'll have to resolve some puzzles as well, but we wanted to integrate them in the narrative and the scenery. You are in a spaceship and we wanted it to feel like it. The interaction with these puzzles is the same as in the rest of the game trying to not break the immersion in the story.</p>
<p>And you'll also can interact with the terminals and computers around the ship. Some will give you key information, others will help you in your way out. There is a whole operating system full of software and apps filled with information of any kind to explore and take advantage of. You'll have a tool (called Mnem/0z1n3) that will help you gathering and classifying information and breaking through password protected terminals.</p>
<h6>SYSTEM REQUIREMENTS</h6>
<p>MINIMUM:<br>OS: Windows 7/8.1/10 (64 bits)<br>Processor: i5 4260u 1.4GHz<br>Memory: 4GB<br>Graphics: NVIDIA GeForce GTX 560 1GB/AMD Radeon HD 6870 1GB or better<br>DirectX: Version 10<br>Storage: 5GB</p>
<p>RECOMMENDED:<br>OS: Windows 7/8.1/10 (64 bits)<br>Processor: i5 6600 3.3GHz<br>Memory: 8GB<br>Graphics: NVIDIA GeForce GTX 970 4GB/AMD Radeon R9 290 4GB or better<br>DirectX: Version 11<br>Storage: 5GB</p>
<h4>FEATURES</h4>
<p>- First person exploration game.<br>- A deeply narrative game with a plot full of twists and mysteries.<br>- Puzles you'll have to solve while advancing in the main story.<br>- A variety of beautifully crafted sceneries.<span></span></p>
<h4>PROLOGUE DEMO</h4>
<p>The Fall of Lazarus: The First Passenger is the conclusive prologue and demo of The Fall of Lazarus. In this little adventure set in the year 2180 you will play as Caleb Rogers, a Gen-Ethics (an audit firm focused on controlling the normative and quality of criogenic, clonation and genetic alteration processes) who wakes up in the USSC Lazarus against his will.The First Passenger is a little slice of the final game where we showcase all the playable mechanics of the full game and also works as an example of the narrative we want to play with. You can play a whole level of the USSC Lazarus out of the five levels will include the final game, every one of them highly detailed and full of objects and terminal to interact with while playing the main story. But we wanted you to enjoy this little stand alone experience separately if you want to. This is only the prologue with another protagonist but we highly recommend you to stay tuned and, when the day comes, enjoy the full experience.<span></span></p>
<h4>REFERENCES</h4>
<p>When we have to describe The Fall of Lazarus in a phrase we always say «it's like Firewatch (Campo Santo) meets the film Moon (Duncan Jones)».</p>
<p>The astonishing off-frame and foreshadowing narrative of Moon is our core narrative reference and the slow paced development of the plot and clever dialogues of Firewatch are really inspiring to us.</p>
<p>Of course we're filled with references such us Gone Home, Mind: Path to Thalamus, The Guest and films like 2001: a space odyssey or Alien. Even Lost series are being really influencing because of how it works the mysteries and characters.</p>
<h4>PLATFORMS</h4>
<p>We will launch The Fall of Lazarus on PC at first. We obviously want to release it on as much platforms as we can, but right now we have to focus on the PC version. We also like to port the game to VR but we have to wait to see how things work.</p>
<h4>FOLLOW US</h4>
<p>Follow the development of our game:</p>
<p>Official website: <a href="http://www.thefalloflazarus.com/" rel="nofollow noopener">http://www.thefalloflazarus.com</a><br>Follow us: <a href="https://twitter.com/NoWandStudios" rel="nofollow noopener">https://twitter.com/NoWandStudios</a><br>Visit: <a href="http://www.nowandstudios.com/" rel="nofollow noopener">http://www.nowandstudios.com/</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/8ZLG-KmuMwM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA1LnBuZw==/original/r%2BLY9u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA2LnBuZw==/original/07dn6K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA3LnBuZw==/original/hdxFMv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA4LnBuZw==/original/Hg6rC8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvNjg1Njg0LnBuZw==/original/8nHht4.png]]
<p>An adventure location, suitable for classic editions of the world's most popular role playing game. If you're playing the current edition of the aforementioned game, it'd probably be a good idea to double the hit points of the monsters.&nbsp; Probably appropriate for characters of 5th level or so.&nbsp; Uses art assets from:&nbsp;<a href="https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-black-metal-doom-world">https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-black-metal-doom...</a>&nbsp;Check it out!</p>

[img width=500 [https://img.itch.zone/aW1nLzUyMTcyMzYuanBn/original/sMjjRk.jpg]]
<blockquote>Tonight you will prepare the body. You will hang the heavy black curtain, and you will put out the call in the town paper.<span class="">&nbsp;&nbsp;</span>Tomorrow night, when the sun sets, the chosen mourner will arrive, with their matter to discuss. You will sit with the body on one side, coaxing the soul back to the body, and the mourner will sit on the other.<span class="">&nbsp;&nbsp;</span>The final undertaking will begin.</blockquote>
<p><strong>THE FINAL UNDERTAKING&nbsp;</strong>is a one player journaling game about grief, resolution, necromancy, and a town. It uses a d4, a tarot deck, and pen and paper to tell a story about an undertaker, who works in a town to prepare bodies for burial, briefly brings the spirit back to the body,&nbsp;and then facilitates a conversation between a single mourner and the deceased about their unresolved business.<br></p>
<p>In this game, you will use the tarot cards to form a spread that tells the bones of a story -- the deceased, the object they are being buried with, the mourner here to visit them, and the unresolved business between them. From your spread, you will be able to construct small narratives and write them down as journal entries.&nbsp;</p>
<h1>Warnings</h1>
<p>This game deals with topics of death, grief, and relationships. If you need to step away at any point, do so. The game will still be there. Your health is more important.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjYxLnBuZw==/original/B29fAU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI5LnBuZw==/original/To4umI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjMwLnBuZw==/original/Fqqht%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI4LnBuZw==/original/FEaKrS.png]]
<h1>The Flame Still Flickers In The Fen</h1>
<blockquote><em>There you have seen the true dark enemies of England. Sick father and  mother who would have us children forever. Stephen, our land must live.  This land we love must live. Her deep, dark flame must never die. Night  is falling. Your land and mine goes down into a darkness now, and I,  and all the other guardians of her flame are driven from our home up out  into the wolf’s jaw. But the flame still flickers in the fen. You are  marked down to cherish that. Cherish the flame till we can safely wake  again. The flame is in your hands, we trusted you, our sacred demon of  ungovernableness. Cherish the flame. We shall rest easy. 
<br>- King Penda in Penda's Fen&nbsp;(written&nbsp;by&nbsp;David&nbsp;Rudkin)</em></blockquote>
<p>A year ago I watched the BBC Teleplay Penda's Fen for the first time, on recommendation from my minister. &nbsp;It's from 1974 and is about a gay teen in rural Worcestshire whose conservative and christian biases are challenged by visions given to him by the Fen he inhabits.</p>
<p>To say it affected me is an understatement.</p>
<p>The Flame Still Flickers In The Fen is an attempt to capture and modernise the feelings it gave me. &nbsp;You play teenagers, who are genderqueer, but they don't know it yet. &nbsp;You live in the kinds of places me and my friends grew up in, towns on the rural-urban fringe, where twenty minutes on one bus takes you into a major city and twenty minutes on another strands you in the middle of nowhere. &nbsp;There's something liminal about these places, and the natural environments that grow within them, where you can hide yourself among the trees and foliage and pretend you've escaped the motorways and farmland and shops less than a mile away.&nbsp; &nbsp;Where the divine seeps in and becomes inescapable.</p>
<p>This game invites you to allow yourself to become distorted and twisted by those places and the things you find inside them. &nbsp;It asks you to consider the politics of the outer world, and how they affect you, even when you run away from them. &nbsp;It demands of you to fight against them.</p>
<p>It's important to me, and I hope you like it.<br><br>It also has some excellent art, done by some excellent artists, and they deserve your awe and support so much, so please go and look at their other works and support them if you can.</p>
<h5><br>Credits:</h5>
<p>Writing and layout: Alexis/Lichen Arrowsmith</p>
<p>Art for Acts 1 &amp; 2: Sonja Klisch (Instagram: @bluuk.y)<br>Art for Act 3: Molly Griffiths (DeviantArt: bluesapphiredragon)<br>Art for The Ancient Whispers: Folgers B. Kelley (Twitter: @bestpartofwaki1, Tumblr: thebestpartofwakingup)<br>Art for The Hands of Light: Theresa Dettloff (Instagram/Twitter: @tdrawingdump) </p>
<p>Editing: Ethan Treaster</p>
<p>Playtesting: Tomas Guilfoyle, Tom Hale, Sophie Hayman, Paige Harvey, Ethan Treaster, Patrick Philbin</p>
<p>Very Helpful Advice: John Battle, Gordie Murphy</p>
<p>Patrons: Ceaserboo, Ethan Treaster, MxMossy, Rynoclank, Danny Britzman, Paige Harvey</p>
<p>Inspired by Penda’s Fen (1974), Sleepaway by Jay Dragon, Ribbon Drive by Avery Alder and years spent exploring Royden Park and Thurstaston Common.</p>
<p></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzU2NjE0ODIucG5n/original/RHkDI8.png]]
<p>Who hasn't dreamt, at some point, of filling a pool full of jello and swimming in it? In some of us, that dream never died. Some of us kept dreaming: what if the whole street was jello? Or the continent? The world!? The Floor is Jelly posits a universe made of jello, made purely for one's own amusement. No longer need we look to our walls and our floors and sigh, "How solid! How sadly immalleable! How I wish for a world consisting only of Non-Newtonian fluids!" That world has arrived, via the dark magic of videogames, as&nbsp;<em>The Floor is Jelly.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTYucG5n/original/RlspKr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTcucG5n/original/bsddvK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NjcucG5n/original/c7JE5c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTUucG5n/original/ejvOiJ.png]]
<h2>The Furniture of Self (VR/Non-VR)</h2>
<p>is an autobiographical VR game about identity and self.&nbsp;<br>Explore my room, create your identity and find out&nbsp;about my own.</p>
<p></p>
<blockquote class="text-center"><em>A human is born without identity, surrounded by everything, in contact with nothing. From the first touch ones identity is starting to exist until it gets overwhelming, ever changing and incomprehensible.&nbsp;</em></blockquote>
<p></p>
<p>This game is the product of a year of studying the topics identity and self. It tries to visualize the process of building ones own identity and exploring a given identity.&nbsp;</p>
<p>Everything you touch will become a part of your self and you cannot let go anymore. Your body is not able to interact with the surrounding, only your identity can do so.</p>
<p>While exploring the room and its contents stories about myself will be unlocked, which are attached to the items in the room.</p>
<h5>Controls:</h5>
<p><img src="https://img.itch.zone/aW1nLzE5ODI0MDAuanBn/original/6seWxH.jpg" alt="HTCViveControls" title="HTCViveControls" loading="lazy"></p>
<h5>None VR Controls:</h5>
<ul><li><em>Rightclick </em>to look around</li><li><em>W|A|S|D</em> to move</li><li><em>Click </em>to grab item</li></ul>
<h6>Menus:</h6>
<ul><li><em>Tab </em>to open catalogue</li><li><em>Q|E</em>&nbsp;to look at previous/next catalogue item</li><li><em>Esc </em>to open menu</li><li><em>Scroll </em>to navigate menu or catalogue</li><li><em>E </em>to confirm menu selection</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/VbPdFbS73ls" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxNjEuZ2lm/original/GnLgh7.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxNTQuZ2lm/original/Md8Lgw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxMzQuZ2lm/original/GxI%2Fbu.gif]]

<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/Landing.png?t=1589410880" loading="lazy"></figure>
<h5 class="text-center">12/1/20: PERMANENT PRICE DROP! $<em><del>5.99</del></em>&nbsp;→ $2.99!</h5><h2>A mysterious landing...</h2>
<p>What could this mean for the visitors of Tinderboone National Park..?<br></p>
<h2>A curious glowing entity...</h2>
<p>Assume the role of an extra dimensional being that gets weird in the woods, night after night.<br></p>
<h2>An expansive national park...</h2>
<p>Wander across an interactive open world environment..and encounter the humans that hang around in it.</p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/Totem_Park.jpg?t=1589410880" loading="lazy"><br></figure>
<h2>Features:</h2>
<ul><li>Be an alien</li></ul>
<ul><li>Chill out in the woods</li></ul>
<ul><li>UFO fast travel</li></ul>
<ul><li>Say "Hello" to humans</li></ul>
<ul><li>At least 10 layers of parallax, wow</li></ul>
<ul><li>Creep around an ever changing environment</li></ul>
<ul><li>Unlock new cosmic abilities</li></ul>
<ul><li>Insect friends</li></ul>
<ul><li>Move around using a keyboard</li></ul>
<ul><li>Occasional forest fire surprises</li></ul>
<ul><li>Very funky music soundtrack</li></ul>
<ul><li>Experiment with touching things</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/GM_steam_header.png?t=1589410880" loading="lazy"><br><br><em>The Grey Man is waiting for you.</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qh033de0EZE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDEuanBn/original/tDCRXO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzcuanBn/original/4SJfih.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzEuanBn/original/Xh9L35.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzIuanBn/original/Np9qbz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzguanBn/original/TvrdRQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzYuanBn/original/551NMg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDIuanBn/original/lB3CLs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDAuanBn/original/gMut6Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzQuanBn/original/SD8fsN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzUuanBn/original/Q9O3r8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzMuanBn/original/J10lrM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDMuanBn/original/eGf6A%2B.jpg]]
<p class="text-center"><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener"><br></a></p>
<h3 class="text-center"><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener">GET THE FULL VERSION ON STEAM NOW!!</a><br><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzQ2OTgzODAuanBn/original/aFkyok.jpg" loading="lazy"></a></h3>
<h4 class="text-center">Just to reiterate, the itch version is a demo! The full game won't be available here for a while</h4><p>If you got here through the Palestine Aid bundle, please, <a href="https://sandramj.itch.io/the-hayseed-knight/devlog/261610/to-the-palestine-aid-bundle-purchasers">read this devlog first</a>!<br></p>
<p><em><del>Okay, cool, now that we got that out of the way...</del><strong><br></strong></em><strong></strong><br></p>
<p>Come, traveller, and listen to the tale of <strong>Ader-sind of the Upperfield,</strong> the greatest knight the kingdom has ever known! The bravest! The most handsome! The... <br></p>
<p><em>yeah, no, let's try this again.</em><em><br></em></p>
<p>Join a ragtag band of misfits as they piece together how <strong>Ader,</strong> a one-eyed farmboy with seemingly impossible dreams, becomes <strong>the most celebrated knight the kingdom of Acazhor has ever known.</strong> <br><br>This gorgeous, <strong>fully-voice acted </strong>and <strong>animated </strong>visual novel unravels in unexpected ways with a perfect blend of mystery! Comedy! ROMANCE!<br></p>
<p><em>So&nbsp;here, let me&nbsp;take&nbsp;it&nbsp;from&nbsp;the&nbsp;top&nbsp;once&nbsp;more:</em></p>
<ul><li>Fully and lovingly <strong>voice acted</strong>!</li><li>Gorgeous, <strong>animated </strong>sprites!</li><li>A <strong>unique world </strong>with lots of lore and an in-game encyclopaedia!</li><li>Created primarily by a single person over 4 years so you'd better believe I LOVE THIS.</li><li><strong>SAFE FOR WORK. </strong>This is a selling point, apparently! Yes really. PG 16<em>!<br></em></li><li><em><strong>3 hours of a free demo!</strong> (So you can see why I need money to make this, I mean come on)</em></li></ul>
<p>The game is very much still in development, so anything is subject to change in future versions! If you want to help me develop this game, there's a <a href="https://www.patreon.com/thehayseedknight" target="_blank" rel="nofollow noopener">patreon</a> and any contribution is really appreciated!<br>Keep up with development on <a href="https://twitter.com/sandramjdev" target="_blank" rel="nofollow noopener">twitter</a>!<br></p>
<p>-Streams and Let's Plays are really appreciated! I'd love to watch yours and share it!<br></p>
<p>-Please, do not redistribute.</p>
<p><strong>Content Warnings:</strong> fantasy racism, fantasy homophobia, jokes and serious talk about death in chapter 3, heavy drinking<br></p>
<p><strong>Current Known Issues:</strong></p>
<p>-None in the <em>demo </em><del>ha ha what</del><br></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/OKjwFaj3G6c" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzE2Nzc3NjIuanBn/original/WhdA%2Fs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzQ4NDMyNDcuanBn/original/ssOj%2BT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzE2Nzc3NjUuanBn/original/1WX%2F%2Bl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzI1NjgxOTcuZ2lm/original/GiF1Kf.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzI1NjgyMjkuZ2lm/original/I7k1Ru.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzQ4NDMyNTIuanBn/original/vojOdX.jpg]]
<p>The Western States have entered an age of
wonders. Technological innovations
transform the lives of her people.
Automobiles connect vast distances
over glistening highways. Radio
waves carry new voices, thoughts,
and art to ears around the nation.
Neon lights hold back the night&nbsp;on the shoulders of massive
dams. And the train—ceaseless,
thundering, unrelenting—powers it all; pumping food, material, and people
through the veins of this great
extractive beast.</p>
<p>But these new wonders have not
brought blessings to everyone.
With the Federal Government in the pocket of powerful Robber Barons and Vampires;
the poor, and the land itself, are
dispossessed and exploited. In The Western States, many stow away on
the freight trains in search of paying
work.
</p>
<p>And then there are the monsters.</p>
<p>Werewolves prowl the Northern
Prairie. Big Foots leave the woods
in greater numbers. The dirt itself
seems to have risen up in the Dust
Bowl of the Southern Prairie. Vampires
haunt the elegant mansions of
Acadia, ruthlessly running their railroad lines.</p>
<p>The Federal Government has
effectively abandoned its people.
The wealthy can afford protection,
but most communities are
struggling to cope. This is where
you come in.
</p>
<p>You are an adventurer, a laborer, a
wanderer, and a monster hunter.
As a member of the International
Brotherhood of Itinerant Sellswords
(IBIS), you travel the rails of The Western States, selling your skills&nbsp;to whatever Neighborhood, Town
Council, Grange Hall, or whoever
will pay you for your next meal. You
are a knight of the rails.</p>
<p>It’s a dangerous, precarious life, and
probably not one you had planned
to enter, but the people need your
help. And righteousness is its own
reward. Right?&nbsp;</p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>The Knights of the Road is a tiny hack of&nbsp;<em>Into the Odd/Electric Bastionland </em>by Chris McDowell <a href="http://www.bastionland.com" rel="nofollow noopener">(www.bastionland.com)</a>. Players assume the mantle of monster hunters who hop the rails of a dystopian early 20th century, taking contracts to kill creeps and monsters, all the while avoiding the wrath of evil Barons of Industry.</p>
<p>Work together to tell a fun
story, solve puzzles, improvise, joke,
eat, and enjoy your time together.</p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>What do you get?</p>
<p>PDF versions of three 16-page booklets: the main rule book, a bestiary, and a book of GM advice.</p>
<p>32 hand-drawn, black-and-white illustrations.</p>
<p>A high-quality PNG of an 18x24" full-color poster map of the Western States (the setting for The Knights of the Road).</p>
<p>A PDF of a printable ready-to-assemble booklet layout, with instructions for putting it together yourself.</p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>For printing at home, make sure to select long side binding if you're printing double-sided,&nbsp;&nbsp;flip the page on the long side if you're hand-feeding&nbsp;it. Also, make sure to scale it to fit in your printable area on your printer. Hand-feeding will be more accurate to line up the printed area on both sides of the paper.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/pvy7C0Bjhnk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzUyMTU4MTcucG5n/original/d0yo04.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzUyMTU4MjEucG5n/original/g3CJEv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzU4NTE3NzkucG5n/original/OqPRcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzU4NTE3ODcucG5n/original/oa0vsV.png]]
<p><span></span></p>
<p class="text-justify">The world of Rosarah is haunted by the ancient past. Grand civilizations fell to the iron fist of the Kithen Empire. The people suffered. But while the empire fell over 1,000 years ago, the guardians who protect Rosarah are dwindling.</p>
<div class="text-justify"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/SHITjGb4qX8" frameborder="0" allowfullscreen=""></iframe></div>
<p class="text-justify">They are the Librarians: the guardians of ancient knowledge and history, protectors of the 8 magic spell books which were originally used by evil to conquer Rosarah. Randel is thrust suddenly into his role as a Librarian when his grandfather is slain by an undead monster. He must unseal the spells, buried deep in well-guarded Libraries, in order to defend Rosarah once again from tyranny.</p>
<div class="text-justify text-center"><img src="https://img.itch.zone/aW1nLzI4NjIxNzcuanBn/original/0wU7v2.jpg" style="color: inherit; font-size: inherit" loading="lazy"></div>
<p></p>
<p class="text-justify"><strong>Exploration:</strong> Explore the vast and open world of Rosarah, investigating its many secrets.&nbsp;Find hidden treasures, collectible upgrades, and interesting landmarks. You are free to tackle the challenges in whatever order you like, as it is possible to explore the entire game with just the tools you have available at the beginning of the game.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NjIxNzguanBn/original/qiDdVJ.jpg" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p class="text-justify"><strong>Solve Puzzles:</strong> Uncover the secrets buried in the eight hidden Libraries throughout Rosarah. Each is riddled with dangerous traps, and puzzles that seek to trick any who might enter uninvited. If you are able to navigate them, each contains a powerful spell to add to your set of abilities.</p>
<p><img src="https://img.itch.zone/aW1nLzUxOTQ3NDkuanBn/original/Pg5it0.jpg" loading="lazy"><br></p>
<p class="text-justify"><strong>Battle Enemies:</strong> Take on fourteen powerful bosses, as well as minibosses, and a host of fiendish foes determined to reign destruction across Rosarah. Use many different strategies to fight, making use of an arsenal of weapons and magical attacks. Find new abilities, and upgrade your abilities by finding hidden treasures.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI4NjIxNzkuanBn/original/uOn%2Bfn.jpg" loading="lazy"><br></p>
<p>
</p>
<p class="text-justify"><strong>Legend Quest:</strong> For those looking for an extra challenge, Legend&nbsp;Quest is included in v5.0.0. With this game mode, the entirety of Rosarah is changed. Enemies are stronger and have new abilities. The overworld includes new perilous foes and traps. Every Library has a transformed layout and new mechanics, requiring you to use every tool at your disposal.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzI2MjgzNjIucG5n/original/mvmC8D.png" style="max-width: 100%; background-color: rgb(17, 17, 17)" loading="lazy"></figure>
<p><strong>[Note]</strong>&nbsp;This game can be played on a keyboard with configurable controls. However, a gamepad controller is recommended for the best experience.</p>
<p><strong>This game is available on Windows 10 and Linux.</strong></p><p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SHITjGb4qX8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NzEuanBn/original/i9UGOR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NjYuanBn/original/FeqPdP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NjkuanBn/original/O6R412.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzI4NjIxODAuanBn/original/lRBXRj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzI4NjIxODEuanBn/original/P7IxcN.jpg]]

<p>Uncover the mystery of the Machine's Garden as you make your way through this short and atmospheric narrative-puzzle game. </p>
<p><strong><br></strong></p>
<p><strong>SOLVE CHALLENGING</strong><strong> PUZZLES</strong></p>
<p>Think critically to make your way through 35+ challenging and handcrafted hexagonal grid puzzles. Master the use of special cells that launch, attach and multiply hexes to solve intricately interwoven puzzles.</p>
<p><strong><br></strong></p>
<p><strong>UNRAVEL THE THREADS OF THE PAST</strong></p>
<p>Explore a series of slowly unraveling stories that reveal a poignant, yet lighthearted narrative.</p>
<p><strong><br></strong></p>
<p><strong>REPAIR WHAT WAS LOST</strong></p>
<p>Repair the Machine's forgotten subsystems, but beware the consequences. After centuries of dormancy, the military installation, vast and serpentine, has opened its eye.</p>
<p></p>
<p>by Jon Miller and Michael Schmitt</p>
<p><a href="http://www.machinesgarden.com/presskit/index.html" rel="nofollow noopener">press kit available here</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/WJN9bAqwRQY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzYxMjY4MzEuZ2lm/original/FBEAud.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzQwMDYwMjIucG5n/original/Amm3Bz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzMzMzU3NzAucG5n/original/w1DLUv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzYxMzQyNzQuZ2lm/original/4asif%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzQwMDYwMjMucG5n/original/tzftzu.png]]
<p>Current total: 5$<br>Current goal: 100$&nbsp;<br></p>
<p>If the crowdfunding goal is met,&nbsp;I will add a new set of levels!</p>
<p>You can also buy individual packs of 3 new&nbsp;puzzles for&nbsp;10$!&nbsp;<br>(If you do so please notify me in a comment and what kind of challenge you are searching for, so I can design the best set for you)</p>
<p><strong><br></strong></p>
<p><strong>The&nbsp;Macramancer</strong></p>
<p>Before being a full fledged magician you need to pass these tests.&nbsp;<br>Learn how to use the spells that you will later use in your adventures!</p>
<p>This is a&nbsp;Print &amp;&nbsp;Play, you can print and cut the cards with scissors, or you can download the separated cards and use pen and paper, and&nbsp;your favorite colored&nbsp;tokens!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MTA0LnBuZw==/original/6XHSR%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MTE5LnBuZw==/original/2tSiM8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDkyLnBuZw==/original/h%2FsO2e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDk1LnBuZw==/original/metj7%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDkzLnBuZw==/original/e%2B4N3X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDk0LnBuZw==/original/T4mWKN.png]]
<p><br></p>
<h1>The Magus is a solo journaling tabletop RPG that takes you on a sweeping journey for power, ambition, and arcane mastery, at great personal and interpersonal cost.</h1>
<p>
</p>
<p><em>For the entirety of February, 100% of sales went directly to charity. While that period has ended, every contribution is still dearly appreciated.</em><strong><em>&nbsp;<a href="https://twitter.com/momatoes/status/1367388481035460608?ref_src=twsrc%5Etfw" target="_blank" rel="nofollow noopener">See update.</a></em></strong></p>
<h3></h3>
<h3>About</h3>
<p>As a journaling game, you will roll dice, track stats, create spells, and write&nbsp; imaginary experiences from the perspective of your character: a wizard, newly embarking on their quest for power, their head filled with grand visions of mastery.<br></p>
<blockquote><em>I finally mastered the Forge Chain spell. I had to create a pact with a demon -- forgive me Elia -- but it is worth it. It has to be. It's the only way to bring peace to the kingdom...and glory to me.<br></em></blockquote>
<p><em><img src="https://img.itch.zone/aW1nLzUzNjE2MTAuanBn/original/tOS5f7.jpg" loading="lazy"><br></em><em></em><img src="https://img.itch.zone/aW1nLzUzNjE2MjguanBn/original/19V6vW.jpg" loading="lazy"><br><br>This RPG is crunchy. You will use several polyhedral dice to manage four traits: Focus, Power, Control, and Scars, which shape how the protagonist overcomes&nbsp; challenges and meets their denouement after <strong>seven</strong>, fateful events.<br>&nbsp;<br>&nbsp;<em> &nbsp; &nbsp;Perhaps they sail to the Enigmatic North in search of the final homonculus.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Perhaps they burrow deep underground to escape their eldritch overlords.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Or perhaps they go mad with power, and plunder innocent lives for M O R E<br></em></p>
<p><em></em>Everything comes at a cost, however: will you spend your scant remaining time to acquire more powerful spells, or nurture the few connections keeping you human?<br><br><img src="https://img.itch.zone/aW1nLzUzNjE0NjEuanBn/original/aDpOwI.jpg" loading="lazy"><br></p>
<h5>Overcome fantastic challenges with your fledgling power, meet strange creatures along the way, and fly close to the sweet sun of omnipotence.</h5>
<p><br>Featuring fifty exquisitely-designed pages, The Magus is a memorable experience about sacrifice, loneliness, and the power of magic and pathos coursing through all of us.</p>
<p><strong><br></strong></p>
<p><strong>If you are in hardship and cannot afford this game, please contact me at hello@momatoes.com.<br></strong></p>
<p><strong><br></strong></p>
<p><img alt="Image" src="https://pbs.twimg.com/media/EtI4JnGUUAQd9ko?format=jpg&amp;name=large" class="" loading="lazy"><br>
</p>
<p>Purchase the companion dice at <a href="https://nat20gaminggoods.carrd.co/#collab" rel="nofollow noopener">https://nat20gaminggoods.carrd.co/#collab</a> and receive a free copy of The Magus.</p>
<p><br></p>
<p><strong>Sample Plays:<br></strong></p>
<ul><li><strong>A sorcerer's climb to power, and the catastrophe that follow </strong>(credit: Kin) <strong><a href="http://willkinchlea.com/journal-the-magus/" rel="nofollow noopener">http://willkinchlea.com/journal-the-magus/</a><br></strong></li><li><strong>An ambitious mage finds friends along the way&nbsp;</strong>(credit: PercyPropa)<strong> <a href="https://twitter.com/PercyPropa/status/1355422185343516673" rel="nofollow noopener">https://twitter.com/PercyPropa/status/1355422185343516673</a></strong></li><li><strong>In which the magus aims for a better world, and finds an ally they truly care for </strong><a href="https://twitter.com/PaulCzege/status/1357800664672264192" rel="nofollow noopener">https://twitter.com/PaulCzege/status/1357800664672264192</a></li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDcuanBn/original/zpSiG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MTEuanBn/original/cyqoxU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDguanBn/original/hGg9Go.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MTAuanBn/original/qOcBH8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDkuanBn/original/Zfx0s6.jpg]]
<p><strong>Purchase will include a DRM-free download and a&nbsp;Steam key.</strong><br></p>
<p>The classic web game of love, loss, and balloons by Gregory Avery-Weir remastered for your modern device by Future Proof Games.</p>
<blockquote>Last night I had a dream. <br><br>I floated in darkness, immense, squamous. My mind flowed like my body, slowly and sinuously, tremendous wheels both too slow and too fast for me to describe to you now. <br><br>I was perfect, and titanic, and serene. But then, as I moved through the cold abyss, I saw a light. And as I came near, I saw something... wonderful.</blockquote>
<p>Previously only available in Flash, "The Majesty of Colors" is now available for your PC. Experience it again or for the first time with remastered sound, enhanced interactivity, and polished effects (but the same blocky pixel graphics)! Developed for Windows, OSX, and Linux.<br></p>
<p><br>"So immediately distinctive and unique." <br>- Dora Breckinridge, IndieGameplay</p>
<p>"You could write reams about it, but it's a game where much of the joy is in making those discoveries of what you're meant to be doing." <br>- Kieron Gillen, Rock, Paper, Shotgun</p>
<p>Best Interactive Art or Webtoy of 2008 Audience Award <br>- JayIsGames</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qdaRIc2TCy0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTgzLnBuZw==/original/BfNyAD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTgyLnBuZw==/original/3F3QqG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg0LnBuZw==/original/67AxFx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg1LnBuZw==/original/cndEeJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg2LnBuZw==/original/TkUK1Q.png]]
<p><strong>The Missing Locksmith is an alternate reality game that sees you use real world tools to delve through the lives of three thieves.</strong></p>
<p>After a heist goes wrong, the&nbsp;crew can't trust anyone - even each other. So, they set up a safe that needs one digit from each of them, to make sure no-one disappears with the haul.</p>
<p>Can <em>you</em> crack their combination?</p>
<p>Starting with the clues you've been sent,&nbsp;you'll need to solve codes, send emails, decipher voice notes, and hack websites to find the information you need.&nbsp;</p>
<p>Be careful, though - you're not the only one who wants it...</p>
<p><strong><em>FAQ</em></strong></p>
<p><strong>Do I need to have played an ARG before?</strong></p>
<p>This is a short online experience that&nbsp;doesn't require knowledge of the ARG genre.</p>
<p><strong>Do I need anything to play?</strong></p>
<p>Just the downloaded files, a web browser, and an email account.</p>
<p><strong>How many people can play?</strong></p>
<p>This can be played through solo, or as an escape room-style game for a group. To play with more than one person, distribute the starting clues between players (without looking at them), and go from there!</p>
<p><strong>Who created this game?</strong></p>
<p>The Missing Locksmith was created by <a href="http://twitter.com/elleosiliwood" target="_blank" rel="nofollow noopener">Elle Osili-Wood</a>&nbsp;as an online Easter egg hunt during the 2020 lockdown. That'll make sense when you play it.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjA4MDE3LzMyMzg1NzAucG5n/original/71YhMr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA4MDE3LzMyMzg1NjkucG5n/original/Vs4Ly%2F.png]]
<hr>
<p class="text-justify">Waking up in a field off a 2-lane highway isn't the best start to anyone's night. Especially when you don't have a single clue how you got there to begin with. <br></p>
<p>Unfortunately, it's what Alec has to deal with tonight. It's cold, the wind's bitter, and he simply can't remember what happened earlier in the night. It must have been something big.</p>
<p class="text-justify">At least he finds a bus stop for shelter, but given it's a bus stop, he's not the only one there waiting.</p>
<p></p>
<p>Alec has two choices before him. Ignore the stranger's attempts to converse (he could be a serial killer, after all) and wait for the bus, or engage him (what else is there to do stranded at a bus stop) and see what happens. </p>
<p>The choice is yours.</p>
<p></p>
<hr>
<h1 class="text-center">Characters</h1>
<table><tbody><tr><td><img src="https://img.itch.zone/aW1nLzQ3MzUwODgucG5n/original/Um7alp.png" loading="lazy"></td><td><img src="https://img.itch.zone/aW1nLzQ3MzUwOTAucG5n/original/%2FrVVVM.png" loading="lazy"></td></tr><tr><td><strong><em>Alec </em></strong>— a reserved young man of few words. He enjoys long drives at night on his motorcycle and isn't a fan of small talk.</td><td><strong><em>Stranger</em></strong> — another traveler who happens to be as stranded as Alec. <em>Somehow</em>, he's familiar, but Alec can't remember why.&nbsp;</td></tr></tbody></table>
<hr>
<h1 class="text-center">Features</h1>
<ul class="text-center"><li class="text-center">10,000~ Words!&nbsp;</li><li class="text-center">11 Unlockable illustrations! </li><li class="text-center">3 Endings!</li></ul>
<h1 class="text-center">Credits</h1>
<ul class="text-center"><li class="text-center">Writing, Art, &amp; Coding: <a href="https://earlronove.itch.io/">Ronove</a></li><li class="text-center">Coding Help &amp; Android Port: <a href="https://baiyu.itch.io/">BáiYù</a></li><li class="text-center">Music provided by: <a href="http://www.presence-of-music.com/index.html" rel="nofollow noopener">Presence of Music<br></a></li></ul>
<p>Content warning:<br>May not be appropriate for all ages. Contains mentions of suicide, swearing, smoking, and alcohol references.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzQ3MzQ4NzEucG5n/original/eVvyuN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUwMzU5NDQucG5n/original/zhmaI2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUwMzU5NTEucG5n/original/rRbRlw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUxODE0NDMucG5n/original/7VMMbp.png]]
<p></p>
<blockquote>Once upon a time a mouse, a bird, and a sausage formed a partnership.</blockquote>
<blockquote>They kept house together, and for a long time they lived in peace and prosperity, acquiring many possessions.</blockquote>
<blockquote>The bird's task was to fly into the forest every day to fetch wood.</blockquote>
<blockquote>The mouse carried water, made the fire, and set the table.</blockquote>
<blockquote>The sausage did the cooking.</blockquote>
<p></p>
<p>Based on the classic Brothers Grimm story of the same name, The Mouse, the Bird, &amp; the Sausage is a tabletop micro-rpg about fairy-tale creatures living together in dubious harmony.</p>
<ul><li>Play as an adorable animal or foodstuff!</li><li>Do chores!</li><li>Meet quirky neighbors!</li><li>Manage the mood of your household!</li><li>Hope your life doesn't go down in flames!</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYxLnBuZw==/original/TisAb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYwLnBuZw==/original/ah%2F45Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTY0LnBuZw==/original/%2FFqVQq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYzLnBuZw==/original/qFkcOy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYyLnBuZw==/original/7SuhQ6.png]]
<h4><img src="https://img.itch.zone/aW1nLzQ1OTExMDEuZ2lm/original/vQ%2BoVH.gif" loading="lazy"></h4>
<h4>FOUR MILES SOUTH OF DOVER</h4>
<p><em>You're a night fisherman, and you spot a boat approaching. You bait your rod and&nbsp;steel yourself, ready for&nbsp;interrogation.&nbsp;Once he arrives, the man on the opposite deck is calm, civilised, and has a shotgun slung across his back.&nbsp;</em></p>
<p><em>How's this gonna go down?<br></em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener">
<br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MjE4MzUucG5n/original/5CzavF.png" loading="lazy"></p>
<h4>A SHORT GAME BY DE FAULT&nbsp;&amp; CHARD</h4>
<p>The English Protection Group keep&nbsp;a watchful eye on the Smuggler's Run, a renowned crossing for vessels bound from Calais&nbsp;containing illegal immigrants.<br></p>
<p>When faced with an armed man, his voracious&nbsp;appetite for conversation, and&nbsp;nobody else for miles, can you&nbsp;safely get rid of him?</p>
<p>This is a single, film-like&nbsp;scene. You direct the fisherman's actions, as well as directing the camera shots between the cinematic angles available.</p>
<p>The first of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Intense&nbsp;maritime story set in the English channel.</li><li>Surreal, beautiful seascape.</li><li>Choose your fate: will you get out of this alive?</li><li>Cinematic experience where you direct the camera.</li><li>Surging orchestral soundtrack by Richard Campbell.</li><li>An homage to one of cinema's greatest scenes.</li><li>Roughly 5-10 minutes in length.</li></ul>
<h4>OTHER GAMES IN THIS SERIES&nbsp;</h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers" style="font-size: inherit">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect" style="font-size: inherit">The Change Architect</a></li></ul>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard &amp; mouse only</p>
<p>Left &amp; right arrows / A &amp; D - change camera<br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Racism, off-screen violence</p>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our&nbsp;<a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener">Patreon</a>&nbsp;subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon, Itch &amp; Steam.</p>
<p>de Fault: <a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener">@antony_de_fault</a> &nbsp;&nbsp;|| &nbsp;&nbsp;Chard: <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener">@animtree</a></p>
<p>Richard Campbell: <a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener">@ziggidybang</a></p>
<p>Special thanks to our advance testers.<br></p>
<p>For youtubers, streamers &amp; press - <a href="https://drive.google.com/drive/folders/1Q8fF89sa99ONCAZuYPbilZdMB7d7xXaW" rel="nofollow noopener">Presskit<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzM1Mjc1NDAucG5n/original/uBpYKi.png" loading="lazy"><br><br></p>
<p><iframe src="https://store.steampowered.com/widget/1340810/" width="646" height="190" frameborder="0"></iframe></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/yE3Dd1G2rpc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1MzAxNTQuZ2lm/original/xmbxl8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1Mjk5NTEucG5n/original/plcYd0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1Mjk5NTAucG5n/original/pfNPzF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1NTU2ODcucG5n/original/oFx7ea.png]]
<h2><img src="https://img.itch.zone/aW1nLzQ1OTEzNjkuZ2lm/original/BshwUN.gif" loading="lazy"></h2>
<p>ON AN ISLAND IN THE ENGLISH CHANNE
</p>
<p><em>Driving home late one night you encounter a refugee in distress. They are looking for salvation. Do you hand them over to violent authorities? Or risk sheltering them yourself?</em><em><br></em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener"><br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM4OTEyNTMucG5n/original/ecxFRC.png" style="max-width: 100%; font-size: 14px" loading="lazy"><br></p>
<h4>A SHORT GAME BY DE FAULT&nbsp;&amp; CHARD</h4>
<p>Foreigners reported to the authorities have a nasty habit of being 'disappeared' by the vigilante English Protection&nbsp;Group.</p>
<p>You're outcasts, living a private life&nbsp;miles from others already. When faced with someone&nbsp;desperate and alone, someone you're in a position to help, is it your responsibility to?</p>
<p>This is a single, film-like&nbsp;scene. You control the&nbsp;actions of Ola, a retired political cartoonist, as well as directing the camera shots between the cinematic angles available.</p>
<p>The second of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Struggle with a timely political dilemma.</li><li>Choose your own: what does your decision say about you?</li><li>Direct the camera to shoot the story&nbsp;<em>your</em>&nbsp;way.</li><li>Lose yourself in surreal colours.</li><li>Enjoy a moving&nbsp;<span class="">score</span> with arrangements of 90’s classics by&nbsp;Ricky Z.</li><li>A tight, intense 10 minutes.</li></ul>
<h4>OTHER GAMES IN THIS SERIES</h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect">The Change Architect</a></li></ul>
<p><a href="https://farfewgiants.itch.io/change-architect"></a><a href="https://farfewgiants.itch.io/the-outcast-lovers"></a></p>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard &amp; mouse only</p>
<p>Left &amp; right arrows / A &amp; D - change camera&nbsp;<br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Racism, off-screen violence</p>
<figure><img src="https://img.itch.zone/aW1nLzM4OTEyNTYucG5n/original/1YFjsc.png" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our&nbsp;<a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener">Patreon</a>&nbsp;subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon,&nbsp;Itch &amp; Steam.</p>
<p>de Fault:&nbsp;<a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener">@antony_de_fault</a>&nbsp;&nbsp;&nbsp;|| &nbsp;&nbsp;Chard:&nbsp;<a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener">@animtree</a></p>
<p>Richard Campbell:&nbsp;<a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener">@ziggidybang</a></p>
<p>Special thanks to our advance testers.
</p>
<p>For youtubers, streamers &amp; press -&nbsp;<span class=""></span><a href="https://drive.google.com/folderview?id=138GPFBPNUEn0qTiqb2NCwsLQR9-S7osd" target="_blank" rel="nofollow noopener">Presskit</a></p>
<figure><img src="https://img.itch.zone/aW1nLzM4OTEyNTkucG5n/original/r9jKWV.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<figure><a href="https://discord.gg/4zwXzHT" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM4OTUxMzMucG5n/original/SCC7ip.png" alt="Join the Far Few Giants Discord" title="Join the Far Few Giants Discord" loading="lazy"><br></a></figure>
<figure><iframe src="https://store.steampowered.com/widget/1355430/" style="color: inherit; font-size: inherit" width="646" height="190" frameborder="0"></iframe></figure>

<iframe width="720" height="450" src="https://www.youtube.com/embed/fvEg3QW4w0U" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTQucG5n/original/peL2Ca.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTgucG5n/original/5IRH07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTcucG5n/original/kTcKez.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTYucG5n/original/vSjxD7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTMucG5n/original/aAQVFQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTUucG5n/original/4Pe9vB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTEucG5n/original/mecsef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTIucG5n/original/4LPENk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTAucG5n/original/mAlsgC.png]]
<p>The Portal at Hill House is a solitaire journaling RPG about trying to find different elements needed to close the portal before it consumes you and the world.</p>
<p>All you need is a die, some paper, and a deck of cards.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDUucG5n/original/FVYcqA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDQucG5n/original/%2FTHp7p.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDMucG5n/original/Bd54dk.png]]
<p><em>A small life of devotion has its own rewards and hardships. Wherever there is community, these small lives can go on forever.&nbsp;<a href="https://usducktape.itch.io/the-quiet-life-jp">日本語版はこちらからどうぞ。</a></em></p>
<p><img src="https://img.itch.zone/aW1nLzQzMzk5MTEucG5n/original/GNLQfD.png" loading="lazy"></p>
<p><strong>The Quiet Life</strong> is a semi-cooperative TTRPG using cards and dice to enjoy the simple life of a gay nun on a pastoral convent. It's played with a GM who takes the role of the Pastor and 3-6 other players who take the roles of the Nuns. You also need some D6 dice and a deck of cards.</p>
<p>The stakes are low, but there are chores to do and unexpected challenges, all while trying to be as gay as you can and not get into trouble. The Pastor must do their best to help guide the Nuns without losing their job.<br></p>
<p><img src="https://img.itch.zone/aW1nLzQzMzk5MjEucG5n/original/AuLJkr.png" loading="lazy"><br></p>
<p><strong>The Quiet&nbsp;Life</strong> is a game for appreciating a&nbsp;monistic lifestyle of faith and is not affiliated with any one religion. Anybody can have the spirit of a Nun.</p>
<p>Illustrations by <a href="https://www.instagram.com/melspontaneus/" rel="nofollow noopener">Mel</a> with nuns of every stripe and type. Full resolution versions of all the&nbsp;beautiful B/W artwork is also provided. Furry and monster nuns-a-plenty.</p>
<p>Writing, design, and play-testing was completed myself.&nbsp;For additional guidance on the rules, to request a copy due to financial difficulties, or just to say hi, please message me at&nbsp;<a href="https://twitter.com/Nrvnqsrestray" target="_blank" rel="nofollow noopener">@Nrvnqsrestray</a>.</p>
<p>I will be updating the game as much as I can with your feedback&nbsp;and as always, the most&nbsp;updated version will always available to you free of change, no matter the price charge.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NzAucG5n/original/yAVRsQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NjkucG5n/original/XrTrDA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NzUucG5n/original/1COuXD.png]]
<p>The Quiet Sleep is a collection of stories set in a simulation/tower defense game in which you build out your mind in order to achieve your personal goals and maintain control over your emotions.<br><br>Develop your traits to gain new abilities! Decide whether to turn your ambition to the highs of the feeling of achievement or the lows of self-loathing. Choose whether or not to renounce your homeland. Determine how alone you really are.<br><br>Convert different qualities! Take your love of music and your resolve to make something great and use them to think through problems with your songs. Convert your industry and energy into work that will get you paid and then take that money and add some flirtation to go on a date! Use your will to get the strength to feed your callousness enough to help you through a tough time.<br><br>In addition, you will:</p>
<ul><li>Make great music.</li><li>Spy on a local teacher.</li><li>Unpack clothes.</li><li>Woo someone delightful.</li><li>Struggle to maintain a relationship with someone else.</li><li>Be inspired by your muse.</li><li>Go on walks to help you remain calm.</li><li>Realize that you will never be understood.<br>and much, much more.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ucnfiqofNng" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjE4LnBuZw==/original/DJPUZs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIyLnBuZw==/original/NVjgqJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIwLnBuZw==/original/XxU2oa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIxLnBuZw==/original/lL%2FY7e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjE5LnBuZw==/original/1Yw8Fv.png]]
<p><em>Iolanthe's frantic footsteps echoed through the deserted courtyard as the last reverberations of the morning bells faded into the crisp summer air. Her eyes stung where tears of frustration began to well up, a deluge of angst held back by a crumbling levee of stubborn determination. The banks finally broke when a cruel gust rose and tore the pages from her fingers, whisking away with them her hopes of a getting her assignment in on time. She collapsed to her knees by the edge of the fountain, shoulders heaving with each bitter sob.</em></p>
<p>The Rain Still Falls in my Heart is a one page&nbsp;table-top roleplaying game about messy high school relationships and purple prose; it's a game about girls and lesbians of all genders. Nothing is straight forward at this school; everyone has a secret and a past, and nobody knows how to talk about their true feelings.</p>
<p>For fans of Dear Brother and other overwrought shoujo manga from the 70s.</p>
<p><br></p>
<p>Illustration by Axe Marnie! @axe_marnie on Twitter.</p>

[img width=500 [https://img.itch.zone/aW1nLzQ2Nzk1NjAuanBn/original/5iRsL5.jpg]]
<p>The Red Door is a short horror game where you play as an abduction victim placed in the house of a murderer. Find your way around the house and escape before the murderer catches you. The murderer loves to play with his victims so he will give you three chances to escape. Find the keys to unlock the doors, Read the notes left from his past victims and escape as fast as you can.</p>
<p>Controls:&nbsp;</p>
<ul><li>Move - WASD</li><li>Interact/Hide - E</li><li>Unhide - Q</li><li>Drop Item - G</li><li>Crouch/Stand - C</li><li>Toggle Flashlight - F</li></ul>
<ul><li>Search for the keys and notes from past victims.&nbsp;</li><li>Use portals to move around the house</li><li>Solve puzzles to unlock doors</li><li>Find the red door before the murderer finds you</li></ul>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/efmZKyBJFJs" frameborder="0" allowfullscreen=""></iframe></div>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/fNLJiKMMDh4" frameborder="0" allowfullscreen=""></iframe></div>
<p>Can you escape? Will you find the red door? or will you use up all your chances and die trying.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/efmZKyBJFJs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjIucG5n/original/4sAF98.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwNTM4MjEucG5n/original/qc9583.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjAucG5n/original/RVLktV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MTkucG5n/original/hbW2%2Bd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjEucG5n/original/0RjUaj.png]]
<p>The Rise and Fall of Cataclysmo is a short comic about climate change and frustration with the (in)action of the world around us. This story came to me shortly after California and Australia caught on fire in 2019. It was built out of living in a world where anything being done currently seems reactionary instead of preventative or proactive. It is meant to inspire people to not give up in the face of a situation that seems insurmountable.</p>
<p>The story was written by <a href="http://twitter.com/codecloak" target="_blank" rel="nofollow noopener">David Brett</a> (me)&nbsp;and brought to life by the extremely talented <a href="https://www.catparrts.com/" target="_blank" rel="nofollow noopener">Cat Parra</a>.&nbsp;</p>
<p><br></p>
<p>I would love to hear what you think.&nbsp;Please leave a comment below or use either hashtag #cataclysmo or #cataclysmocomic on Twitter. Feel free to tag me as well.</p>

[img width=500 [https://img.itch.zone/aW1nLzMxMjkzODgucG5n/original/I3dVir.png]]
<p><em>The Scarlet Village</em> is a folk horror roleplaying adventure that begins in Prague. In this adventure, your players have been hired by a wealthy young socialite to find their missing brother. They conduct investigations within the city, and discover that their person of interest has travelled to the remote village of Zjerdyv (J-air-divv) in Lithuania.<br></p>
<p>Upon arriving at the village, the investigators find things amiss. The villagers behave strangely, certain persons appear to be something other than human, and the person they have been tracking seems to have been living here as lord of the land. As time passes, these strange occurrences escalate into bloody ritual, madness, and death.</p>
<p>This is a 32-page adventure module for Call of Cthulhu 7th edition.&nbsp; It was written and illustrated by Ben Safford and Sophie Fisher.</p><p>The Call of Cthulhu 7th Edition basic rules are available for free here:&nbsp;<a href="https://www.chaosium.com/cthulhu-quickstart/" rel="nofollow noopener">https://www.chaosium.com/cthulhu-quickstart/</a></p>
<p>More advanced / complete rulebooks are available from Chaosium, but the quickstart rules are sufficient to run this adventure module from beginning to end.</p>
<p><img loading="lazy"><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODc0ODU1LzQ5MjEzNTUucG5n/original/JK9Hat.png]]
<p>A game for 1 Facilitator and 3-5 players.</p>
<p>In this game, a group of characters make their way home across the sea. Their destination is distant, beyond the horizon, but their hopes and memories buoy them up and carry them forward.<br></p>
<p>This is a diceless role-playing game expected to take from 2-4 hours to complete.</p>
<p><em>This game was created as a part of the Up All Night Jam with Off the Table and SuperQueero.</em><br></p>
<p>Equipment needed:</p>
<p>Paper slips or index cards if playing in person</p>
<p>A list randomizer such as <a href="https://www.random.org/lists/" rel="nofollow noopener">https://www.random.org/lists/</a> if playing online.</p>
<p><br></p>
<p><span class="">Play with Safety Tools to ensure a comfortable gaming experience!</span><span class=""> </span></p>
<p><a href="https://bit.ly/ttrpgsafetytoolkit" target="_blank" class="" rel="nofollow noopener">https://bit.ly/ttrpgsafetytoolkit</a><span class=""> developed by Kienna Shaw and Lauren Bryant-Monk</span></p>
<p><br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzY4ODAxLzQzMDE2OTgucG5n/original/%2Beoqyf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4ODAxLzQzMDE2OTcucG5n/original/HLzJbT.png]]
<p>In the far future, humanity has overcome many of its structural and prejudicial shackles. We have spread through the stars to explore and learn, unhindered by many of the mistakes that had plagued our civilizations and institutions for so long.<br><br>Alongside the mighty Astral Marine Corps, Humanity's future is safeguarded by the Colonial Special Operations Executive. The CSOE protects Humankind from disasters of every sort through diplomatic, logistical, and sometimes subversive means. For the most important and trying tasks (such as flash point crises and the assessment of little-understood dangers) the CSOE deploys an Operative, an eminently capable individual trained to handle almost any eventuality. Though few in number, they are the most well-known and lauded portion of the venerable organization.<br><br>The greatest of the CSOE's Operatives is Dame Bryluen Branok. Her face is known from the Qixing Commonwealth to the Ly Aulth Stellar Confederacy, and her name has long been a byword for courage and heroism. She is simultaneously an iconic inspiration to Humanity, and one of the most feared executors of its will.<br><br>When a poorly understood threat strikes a remote research outpost, Bryluen is the prime choice to investigate. Despite decades of experience even she has seen nothing like the foe she encounters, and the aftermath of the attack opens up a bevy of questions. Soon the CSOE charges Bryluen with a task for which she was born: to gather a unique strike team and confront a danger that threatens the very existence of civilization.<br></p>
<p>The Shadow Among the Stars is a full-length novel (about 350 pages), and the first in a trilogy.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDAucG5n/original/4TGxAp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDEucG5n/original/jqEZtx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDMucG5n/original/iPflIm.png]]
<h2>YOU MUST HEED THE SIGNS</h2>
<p><strong>THE SIGN BEARER</strong> is a set of two companion scrolls to be used with <a href="https://maguax.itch.io/backpack-e-dream" target="_blank">Backpack &amp; Dream</a>, an exploration game engine by <a href="https://maguax.itch.io/" target="_blank">M.A. Guax</a>. They're part of the <a href="https://itch.io/jam/rpg-latam-jam" target="_blank">#RPGLatamJam</a>.<br></p>
<p class="text-center"><strong>º&nbsp; º&nbsp; º</strong><br></p>
<p><strong>THE HEAVENS SCROLL</strong> depicts the <em><strong>12 Signs</strong></em> that reside in the Heavens, each ruling over the skies for a month of the year. It teaches us of the <strong><em>Harbingers</em></strong> of their will upon the earth, the <strong><em>Traditions</em></strong> we follow to appease them, and the <strong><em>Blessings</em></strong> bestowed upon the souls who are born favored by them.</p>
<p class="text-center"><strong>º&nbsp; º&nbsp; º</strong><br></p>
<p><strong>THE HERO SCROLL</strong> records the information we have on a blessed soul, favored in birth by one of the 12 Signs of the Heavens. It keeps track of their <strong><em>Name</em></strong>, <strong><em>Looks</em></strong> and <strong><em>Hunger</em></strong>, along with their <strong><em>Body</em></strong>, <strong><em>Mind</em></strong> and <strong><em>Breath</em></strong>. It lists all the<em> <strong>Items</strong></em> they carry and the <strong><em>Rituals</em></strong> they recall, as well as their <strong><em>Bonds</em></strong> with factions and people. It also holds the <strong><em>Sign</em></strong> they were born under and the <strong><em>Blessing</em></strong> it grants them.</p>
<p class="text-center"><strong>º&nbsp; º&nbsp; º</strong><br></p>
<p><em>These scrolls are licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener">CC BY-SA 4.0</a>. The artworks on display are alterations on public domain paintings by Joseph Wright of Derby, Ludwig Deutsch and Charles Livingston Bull. The marble texture in the background was made by <a href="https://br.freepik.com/rawpixel.com" target="_blank" rel="nofollow noopener">rawpixel</a>.</em><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNDgucG5n/original/zlT%2FFb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MTAyNjUucG5n/original/FZNK62.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNDkucG5n/original/%2Fs1qh%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNTAucG5n/original/rhwiJy.png]]
<p class="text-justify">The Silence is a short game about abuse and how it effects the victim.&nbsp; It is based on a true story.</p>
<p class="text-justify">In the game, you explore an empty room.&nbsp; Items that belonged to the character will begin to appear one by one.&nbsp; When you examine those items, the character will recall a memory.&nbsp; In those memories you will see how the abuse affected them.&nbsp; You see the emotions they felt and how it slowly destroyed them.</p>
<p class="text-justify">If the character ignores their memories, they will be stuck in the room in limbo forever.&nbsp; Only by facing their pain and accepting they were a victim can they finally be able to heal and move on with their life.</p>
<p class="text-justify">Abuse can tear you apart down to the bones, leaving you vulnerable in the darkness like a plant starved of light.&nbsp; You absorb any light the abuser throws at you, no matter how small.&nbsp; That little bit of light is what draws you in and traps you.&nbsp; For even the smallest amount of light will shine in a room full of darkness.&nbsp; So you sit there, distorting your body as you grow towards any light.</p>
<p class="text-justify">Some people speak out about abuse, while others march and protest.&nbsp; Some try to move on but they can’t.&nbsp; And even though they may be free from that darkness, they are still somehow trapped by it.&nbsp; So they stay silent.</p>
<p class="text-justify">Who you are does not matter.&nbsp; Your gender does not matter.&nbsp; It can happen to anyone, and it does.&nbsp; I know this because The Silence is my story.</p>
<p class="text-justify">While this happened a lifetime ago, I still struggle with it today.&nbsp; For me, making this game and sharing my story is a form of closure.&nbsp; And a big part of that closure is forgiveness.</p>
<p>“Sometimes, the only way to heal our wounds is to make peace with the demons who created them.” - Dr. Ishiro Serizawa</p>
<p class="text-justify">
</p>
<p>Controls:<br></p>
<p>ARROW KEYS for direction</p>
<p>SPACE BAR to select/interact</p>
<p>ESC KEY for menu</p>
<p class="text-justify">**The game was tested on several different monitors/tvs.&nbsp; Screens that have the brightness turned down may be hard to see.&nbsp; If the title screen appears too dark, you should&nbsp;increase the brightness.**</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/EGeumhPmfk0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjQucG5n/original/tAhoPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjUucG5n/original/%2FvQyQ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjYucG5n/original/w9ljte.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjcucG5n/original/DBvCw5.png]]
<h1>From the deepest miasma to the shimmering veil, everything is in its place. The Peakborn rule, the Sunken toil, and the Unmoored trade. But Clear Skies Technology could rewrite the atmosphere, and with it the culture of planet Zé.&nbsp;</h1>
<h1>It all depends on how you use it.</h1>
<p><img src="https://media.giphy.com/media/VIPvPjUIYiiWRohW6j/giphy.gif" loading="lazy"></p>
<h3><a href="https://www.kickstarter.com/projects/1224641808/the-sky-left-us-a-visual-novel/" rel="nofollow noopener">Kickstarter live!</a> Ends 2/18/21. We're still reaching for our goal.</h3>
<p><em>The Sky Left Us</em>&nbsp;is a sci-fi visual novel about climate change, classism, and how relationships shape our politics. Play as Spire Risan, an off-worlder scientist who becomes entangled in the drama of a mountain they came here to save. Fall in with the denizens of the three castes, and find that things are more complicated than they seem: be it love, family, or the systems that shape us.</p>
<p>#PoliticsAsPersonal #EthicsOfTechnology #ClimateChange #Classism #EveryoneIsGay #NonbinaryProtag #FogPunk #Hotties #Intrigue #Romance #FoundFamily #MessyCharacters #DifficultChoices #QueerTransContent</p>
<p><strong>This is a demo of the game that features the opening sequence. </strong>We are launching a Kickstarter soon to fund the rest of the development. Follow us here, or on <a href="https://twitter.com/ratwormgames" target="_blank" rel="nofollow noopener">Twitter</a> and <a href="https://www.instagram.com/ratwormgames/" target="_blank" rel="nofollow noopener">Instagram</a> @ RatwormGames .&nbsp;</p>
<p><a href="http://www.theskyleftus.com" rel="nofollow noopener">www.theskyleftus.com</a></p>
<figure><img src="https://img.itch.zone/aW1nLzQxNjMzNjAuanBn/original/4IRIhL.jpg" loading="lazy"></figure>
<h3>The Story</h3>
<ul><li>4 routes and 1 true route exploring Spire's relationships with the denizens of Zé.&nbsp;</li><li>2 stretch goal routes.</li><li>Intrigue and class politics grounded in the relationship routes.</li><li>A rich sci-fi planet characterized by the climate and its imminent changes.</li><li>Diverse characters and relationship types.</li><li>Difficult choices and deeply flawed characters.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxNzQxMjUucG5n/original/9PFUC9.png" loading="lazy"></p>
<h3>The Gameplay</h3>
<ul><li>No mechanical bells and whistles. Just quality writing and critical choices.</li><li>A killer soundtrack.</li><li>Multiple endings for each route.<img src="https://img.itch.zone/aW1nLzQxNzQxMjcucG5n/original/Cm%2FKmS.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></li></ul>
<h3>The Route Characters</h3>
<ul><li>THE SPYMASTER — A two-faced Peakborn noble trapped in a web of his own design.</li><li>THE PAINTER — An ambitious Unmoored artist, kept like a bauble by her Peakborn patrons.</li><li>THE WINDY KID — A quiet Unmoored child who has fallen in with pirates.</li><li>THE REVOLUTIONARY — A fiery Sunken leader who wants the peaks to burn.</li><li>THE IDOL (True Route) — A Sunken Idol with a strange connection to the poisonous miasma.&nbsp;</li><li>THE DIVER (Stretch Goal Route) — A&nbsp;Sunken diver who explores the planet's depths.</li><li>THE PIRATES (Stretch Goal Route) — Two&nbsp;Unmoored pirates who search for freedom through their crimes.</li></ul>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxMzkuanBn/original/tViLYR.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNDEuanBn/original/M3AUxe.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNDYuanBn/original/iYdc0q.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ1ODQ1NjUuanBn/original/c4iN5t.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ2MjI3ODMuanBn/original/RkBEPJ.jpg" loading="lazy"><br></p>
<p>Stretch Goal Routes<br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ1ODQ1NzMuanBn/original/4arjgv.jpg" loading="lazy"></figure>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ4ODU2NjMuanBn/original/A3Yp8L.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQxNzQxNzUucG5n/original/08E69A.png" loading="lazy"></p>
<p>Diversity in gaming is important to us, which is reflected in our team, the characters, and the subjects of the game. You can expect a range of relationship types and experiences of gender and sexuality. At the same time, this game has a small cast, so we are not able (or trying to) represent everyone.</p>
<p><em>Ratworm Games</em> are the creators of the Event Horizon Universe of larps, a setting in which <em>The Sky Left Us</em> takes place. <em>Ratworm Games</em> produces queer-trans speculative fiction games.&nbsp;</p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDQucG5n/original/u113wN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDYucG5n/original/LFsjOr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDcucG5n/original/wPVPuy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDUucG5n/original/IWLSJR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMTgucG5n/original/%2FPPqSI.png]]
<p><em>Somewhere in the vast multiverse, there is a post office box. It looks like all post office boxes in all parts of every world, and sits on the corner of any--or possibly every--street. Inside are many levels, inhabited by small spirits whose sole tasks are to ensure that the tiny pieces of every metaphorical puzzle arrive where they are needed before someone needs them. You are one of these spirits. Perhaps someday, you will rise to become a deity.</em></p>
<p>In The Spirit of Small Gifts, as you talk to your friends about the TTRPG games they're playing, you get to be the answer to the question "Is it reasonable that I'd have _____ in my inventory?" A Spirit of Small Gifts drops small, seemingly valueless trinkets&nbsp;in the mail so that the recipient has them in their pockets when they need them.</p>
<p>----</p>
<p>Up front, the goals of this game are these: To get people talking to their friends about their RPGs, foster some creative problem solving, and give you an excuse to put some letters in the mail. The goal of this game is explicitly <strong><em>not </em></strong>to override, pressure, or force anyone running a game playing along with your fiction.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTY3LzUwMzU5NjkucG5n/original/qyS23N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTY3LzUwMzU5NzAucG5n/original/pFFXRl.png]]
<p><strong>The Steadfast and the Rebellious&nbsp;</strong>is a tabletop role-playing game and a storytelling game. It is a hack of <a href="https://temporalhiccup.itch.io/reincarnation" target="_blank">REINCARNATION REDUX: Our Requiem</a> by Jamila R. Nedjadi, written for Jammi Jam Jam.</p>
<p>You are all inhabitants of the city, and you have been living in false peace under the rule of the demon king. The last wall, which offered your city limited protection against the demon king, has fallen. Citizens are left with two choices; do everything the tyrant demands, or <strong>resist</strong>. Will we rise victorious against the demon king, or will our resistance be futile? We play to find out.</p>
<p><em>This game is intended to create a quick but rich prologue for characters who rise up against the demon king in a fantasy setting. It is possible to use this game to create a setting and characters for your preferred game about enclosed spaces and giant lizards.</em></p>
<p>To play this game, we will need 1-2 hours, 2-4 players, a deck of playing cards, a conductive space, index cards, writing materials and a copy of this game (digital or printed). One of the player is the <strong>Facilitator</strong>, who has read this document beforehand.</p>
<p>Jess (<a href="https://twitter.com/go_jg" target="_blank" rel="nofollow noopener">@go_jg</a>),&nbsp;Kevin (<a href="https://twitter.com/Knit_Nack" target="_blank" rel="nofollow noopener">@Knit_Nack</a>), Corvyn (<a href="https://twitter.com/CorvynAppleby" target="_blank" rel="nofollow noopener">@CorvynAppleby</a>) &amp; Jordon (<a href="https://twitter.com/MadeOfCartoons" target="_blank" rel="nofollow noopener">@MadeOfCartoons</a>) did an actual play of the game:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-6HP0wf09SQ" frameborder="0" allowfullscreen=""></iframe></div>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-6HP0wf09SQ" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMTcucG5n/original/Sezoiq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMTkucG5n/original/eTuPN2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMjAucG5n/original/qq3f6y.png]]
<p><em>The Stellar Beacon </em>is a zine that supports the sci-fi RPG Return to the Stars with new adventures and which also explores the gamer and geek culture more broadly.&nbsp; This&nbsp; issue includes:<br></p>
<p><em>One Atom of Justice, One Molecule of Mercy, and the Empire of Unsheathed Knives </em>an original essay by novelist and 2019 Hugo nominee&nbsp;Alexandra Rowland, exploring a new science fiction sub-genre: Hopepunk.</p>
<p><em>Aphrodite on Deck</em><br>A solarpunk-themed scenario for Return to the Stars by designer Brie Sheldon</p>
<p><em>Fallen Juggernaut</em><br>Emmett O’Brian brings us a “hard sci-fi” adventure where players explore a mysterious megastructure.</p>
<p><em>Beginning Gamemaster Pep Talk</em><br>Comics writer and illustrator Amy King provides encouragement for new game masters from a new game master.</p>
<p><em>The Stars, My Sandbox</em><br>Non-linear story prompts and encounters for Return to the Stars.</p>
<p>Get your copy today!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NjcucG5n/original/AK25hP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NTMucG5n/original/h7KAYU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NTQucG5n/original/7%2BRBBX.png]]
<p>One by one, everyone left the once bustling village for the city. Everyone, except Talma. Now approaching the end of her days, she maintains a simple, solitary way of life, surviving, subsisting, tending to her homestead and her goats.</p>
<p>Develop your own personal routine as you care for your farm and your animals. Tend to your goats, make cheese with their milk, collect eggs and cook meals, grow vegetables and barter with the travelling merchant who brings increasingly disturbing letters from your family in the city.<br><br>A follow up to the critically acclaimed <a href="https://memoryofgod.itch.io/where-the-goats-are" target="_blank">Where the Goats Are</a>, The Stillness of the Wind is a quiet rumination on life and loss.</p>
<p>Also available: the <a href="https://fellowtraveller.itch.io/the-stillness-of-the-wind-ost" target="_blank">Original Soundtrack for&nbsp;The Stillness of the Wind</a><em></em>.<br><strong>This OST and full game&nbsp;can also be purchased in&nbsp;<a href="https://itch.io/s/16530/the-stillness-of-the-wind-deluxe-edition">this bundle</a>, for 25% off.</strong><br></p>
<h2>FEATURES</h2>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTQuZ2lm/original/1KasjW.gif" loading="lazy"><br></strong><strong>Tend to your homestead<br></strong>Breed and look after your goats, make cheese from their milk, grow vegetables, water your plants, collect eggs, scare off the birds. It’s a hard but simple life of peaceful subsistence.</p>
<p><br></p>
<p></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTcuZ2lm/original/KAo038.gif" style="max-width: 100%" loading="lazy"><br>Get news from your family<br></strong>The travelling merchant brings letters from your family and friends and with them a view into a city that feels both very far away and as if it threatens to wash away the world you know.</p>
<p></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTUuZ2lm/original/pN8JRL.gif" loading="lazy"><br>Choose how you spend your days<br></strong>It's up to you how you spend Talma’s time each day and what your routine will be. Focus on your chores, wander in the desert, reminisce about the past or draw patterns in the dirt.<br><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTYuZ2lm/original/66j0QG.gif" loading="lazy"><br>Barter for supplies<br></strong>Trade cheese and other items in return for hay for your goats, seeds to plant, fables, exotic items and shotgun shells, whilst exchanging conversation with the travelling merchant, your only human interaction.<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/vFDJP9WmwVE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1NzgucG5n/original/f%2Fgg7c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODEucG5n/original/k4g8by.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODAucG5n/original/IkTIeE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODIucG5n/original/vaQX6y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODQucG5n/original/ZFEXX4.png]]

<p>A fast-paced, physics-based, Attack&nbsp;on&nbsp;Titan inspired game. Swing around from the grapple hooks on&nbsp; your swords, and take down huge enemies, before they destroy the gate!</p>
<p>This game is very much liable to make you nauseous, so I recommend playing seated, even if you're used to VR. If you start to feel sick, please stop playing, and maybe come back once you're feeling better!</p>
<p>This game is playable on any SteamVR compatible headset. Tested on Index/Knuckles.<br></p>
<p><a href="https://github.com/iamrequest/the-tall-wall-falls" rel="nofollow noopener">Github</a></p>
<p><strong>Controls<br></strong></p>
<ul><li>Trigger: Shoot grappling hook, interact with settings UI</li><li>Left Control Stick: Smooth Locomotion</li><li>Right Control Stick: Snap Turn</li><li>Grip: Retract rope. This will pull you towards the grapple, if it's attached to something.</li><li>Left Controller A (Lower face button): Open settings menu</li><li>Right Controller A (Lower face button): Jump</li><li>Right Controller B (Upper face button): Toggle slow motion</li></ul>
<p><strong>Credits<br></strong></p>
<table>
	
	
	
	
	<tbody><tr>
		<td><strong>Resource</strong></td>
		<td><strong>Author</strong></td>
		<td><strong>License</strong></td>
		<td><strong>Modifications</strong></td>
	</tr>
	<tr>
		<td><a href="https://github.com/FreyaHolmer/Mathfs" rel="nofollow noopener">Freya Holmer's Math Library (Mathfs)</a></td>
		<td>
<a href="https://twitter.com/FreyaHolmer" rel="nofollow noopener">Freya Holmer</a><br></td>
		<td><a href="https://github.com/FreyaHolmer/Mathfs/blob/master/LICENSE.txt" rel="nofollow noopener">MIT License</a></td>
		<td>
<br></td>
	</tr><tr>
		<td><a href="https://assetstore.unity.com/packages/tools/particles-effects/shapes-173167" rel="nofollow noopener">Shapes</a></td>
		<td><a href="https://twitter.com/FreyaHolmer" rel="nofollow noopener">Freya Holmer</a></td>
		<td>Paid asset store asset<br></td>
		<td>Not included in git repo<br></td>
	</tr>
	<tr>
		<td><a href="https://gist.github.com/mstevenson/4958837" rel="nofollow noopener">mstevenson's Configurable Joint Extension methods</a></td>
		<td><a href="https://gist.github.com/mstevenson" rel="nofollow noopener">Michael Stevenson</a><br></td>
		<td>
<br></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.mixamo.com/#/?query=manne&amp;type=Character" rel="nofollow noopener">Mixamo Mannequin Model</a></td>
		<td>
<br></td>
		<td>
<br></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td>Kenny's Low Poly Weapon Pack (No longer available for download)</td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>Tweaked longsword model</td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/city-kit-suburban" rel="nofollow noopener">Kenny’s City Kit (Suburban)</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/fantasy-town-kit" rel="nofollow noopener">Kenny’s Fantasy Town Kit</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/game-icons" rel="nofollow noopener">Kenny’s Game Icons 1</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/game-icons-expansion" rel="nofollow noopener">Kenny’s Game Icons 2</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>Tweaked an icon to make an HMD icon</td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/ui-pack-space-expansion" rel="nofollow noopener">Kenny’s UI Pack; Space Expansion</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/voiceover-pack-fighter" rel="nofollow noopener">Kenny’s Voiceover Pack: Fighter</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/impact-sounds" rel="nofollow noopener">Kenny’s Impact Sounds</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.kenney.nl/assets/interface-sounds" rel="nofollow noopener">Kenny’s Interface Sounds</a></td>
		<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener">Kenny</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/rpg-sound-pack" rel="nofollow noopener">RPG Sound Pack</a></td>
		<td><a href="https://opengameart.org/users/artisticdude" rel="nofollow noopener">artisticdude</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/grass-001" rel="nofollow noopener">Grass 001</a></td>
		<td><a href="https://opengameart.org/users/lamoot" rel="nofollow noopener">Lamoot</a></td>
		<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">CC-BY 3.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/dirt-001" rel="nofollow noopener">Dirt 001</a></td>
		<td><a href="https://opengameart.org/users/lamoot" rel="nofollow noopener">Lamoot</a></td>
		<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">CC-BY 3.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/outdoor-stone-floor" rel="nofollow noopener">Outdoor Stone Floor</a></td>
		<td><a href="https://opengameart.org/users/sindwiller" rel="nofollow noopener">Sindwiller</a></td>
		<td><a href="https://creativecommons.org/licenses/by-sa/3.0/" rel="nofollow noopener">CC-BY-SA 3.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/heroes-theme" rel="nofollow noopener">Heroes Theme</a></td>
		<td><a href="https://opengameart.org/users/alexandr-zhelanov" rel="nofollow noopener">Alexander Zhelanov</a></td>
		<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">CC-BY 3.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/5-chiptunes-action" rel="nofollow noopener">5 Chiptunes (Action)</a></td>
		<td><a href="https://opengameart.org/users/subspaceaudio" rel="nofollow noopener">SubspaceAudio</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
Converted from .wav to .ogg<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/menu-music" rel="nofollow noopener">Menu Music</a></td>
		<td><a href="https://opengameart.org/users/mrpoly" rel="nofollow noopener">mrpoly</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/clouds-skybox-1" rel="nofollow noopener">Clouds Skybox 1</a></td>
		<td><a href="https://opengameart.org/users/lukerustltd" rel="nofollow noopener">Luke.RUSTLTD</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/zombie-skeleton-monster-voice-effects" rel="nofollow noopener">Zombie / Skeleton / Monster Voice Effects</a></td>
		<td><a href="https://opengameart.org/users/arcadeparty" rel="nofollow noopener">ArcadeParty</a></td>
		<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener">CC0 1.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://opengameart.org/content/fleshy-fight-sounds" rel="nofollow noopener">Fleshy Fight Sounds</a></td>
		<td><a href="https://opengameart.org/users/willleamon" rel="nofollow noopener">will_leamon</a></td>
		<td><a href="https://opengameart.org/content/oga-by-30-faq" rel="nofollow noopener">OGA-BY 3.0</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.fontsquirrel.com/fonts/chomsky" rel="nofollow noopener">Chomsky Font</a></td>
		<td><a href="https://www.fontsquirrel.com/fonts/list/foundry/fredrick-brennan" rel="nofollow noopener">Fredrick Brennann</a></td>
		<td><a href="https://www.fontsquirrel.com/license/chomsky" rel="nofollow noopener">SIL Open Font License</a></td>
		<td>
<br></td>
	</tr>
	<tr>
		<td><a href="https://www.fontsquirrel.com/fonts/dejavu-serif" rel="nofollow noopener">DejaVU Serif Font</a></td>
		<td><a href="https://www.fontsquirrel.com/fonts/list/foundry/dejavu-fonts" rel="nofollow noopener">DejaVu Fonts</a></td>
		<td><a href="https://www.fontsquirrel.com/license/dejavu-serif" rel="nofollow noopener">DejaVU Fonts License</a></td>
		<td>
<br></td>
	</tr>
</tbody></table>
<p><br></p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/k7s1SDXwANE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0MzkucG5n/original/78jBGR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0NTMucG5n/original/0sVZ0j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0NTQucG5n/original/lls7Sf.png]]
<p>[<a href="https://raulranma.itch.io/the-target/devlog/97575/o-alvo" target="_blank">Ver descrição em português</a>]<br></p>
<p>“The Target” is a game about bullying and toxic masculinity. In this game, we play boys in a new school environment, surrounded by strangers, who form a small group, by chance or necessity.</p>
<p>Holding their fears against their chests, these boys that we made up play together in recess, like you’d expect from any other kid. Until one of them sees reason to try and get an upper hand against another one. That other one is The Target.</p>
<p>The Target wouldn’t exist without the brazilian game jam “<a href="http://cybermamute.com.br/concursofvm/" rel="nofollow noopener">Faça Você Mesmo 2018</a>” (which could be translated as “Do It Yourself 2018”), hosted by Cyber Mamute. The game was made under it’s rules and themes - <a href="http://cybermamute.com.br/avaliacoes-o-alvo/" rel="nofollow noopener">you can see the whole journey here</a> (in portuguese).<br></p>
<p><br></p>
<h4>CONTENT WARNING</h4>
<p><em>This game deals with themes of bullying, humiliation and social isolation. People who lived those experiences intensely might not feel safe with this game, and we recommend that it is played with caution. If at any moment during the game you feel like you’re not comfortable playing anymore, announce your decision and leave the game, no explanation required. Your emotional state is more important than any game.<br></em></p>
<p><br></p>
<h2>To play</h2>
<p>You'll need:</p>
<ul><li>A minimum of four and a maximum of seven players (including you).</li><li>A decks of cards with four suits, and at least one Joker.</li><li>Two index cards or pieces of scrap paper for each player.</li><li>Pencils or pens, preferably one for each player.</li><li>A copy of this game’s rules, for referencing and reading while playing.</li></ul>
<p><em><br></em></p>
<p><em>This game is licensed under CC BY-SA 4.0. You can create upon it, as long as you license your game in the same terms and give appropriate credit.<br></em></p>
<p><em><span></span><a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="nofollow noopener">https://creativecommons.org/licenses/by-sa/4.0/</a></em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzM2NTI1OTQucG5n/original/41IiP5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzM2NTI2MDQucG5n/original/IVyMRR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzU2MDQ2MDUucG5n/original/R8WMQj.png]]
<p>What is this?</p>
<p>A
guide to preparing a region for player exploration</p>
<p>A
way to represent exploration during a running that replaces random encounters and provides a physical way to map your players' exploration on the table.</p>
<p>&nbsp;</p>
<p>You will need:</p>
<p>20mi
and 6mi hex map of the region to be explored</p>
<p>At
least one Tarot deck</p>
<p>Optional:
2mi hex map as generated by Alexis Smolensk' new <a href="http://tao-dnd.blogspot.com/2019/07/new-hex-generator.html" rel="nofollow noopener">hex generator</a></p>
<p>&nbsp;</p>
<p>F. Y. I.</p>
<p>The
region is the area of your game world of
particular interest.</p>
<p>As
20 miles is the distance walking travelers and wagons can cover in a full day's
travel on a road, the region is best mapped in 20mi hexes.</p>
<p>Each
20mi hex can fragment into seven 6mi hexes. The 6mi hex is the appropriate
scale for off-road exploration. Depending on fitness level and
terrain/vegetation, a group of fully-laden adventurers can expect to travel 6mi
in 3 hours.</p>
<p>Alexis'
hex generator provides more granularity, creating 2mi hexes within each 6mi hex
and assigning particular features (settlements, religious communities, forested
areas, etc.) that will inform your reading.</p>
<p>The
Tarot deck has 78 cards. The Major Arcana are the cards numbered 0 to 21. The
Minor Arcana cards come in four suits: wands, cups, pentacles, and swords.
Within each suit, there 10 numbered cards and 4 face cards. The 4 face cards
form the Court of that suit: the Court of Wands, the Court of Swords, and so
on. Collectively, the face cards are called the court cards.</p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2MzgzLzI1ODk5OTYucG5n/original/mr0FAk.png]]
<p>An adventure game based on the classic novel by Alexander Dumas. Play as D'Artagnan, Prothos, Athos or Aramis. In this grave mission to save a whole country you have to fight a devious enemy.<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI4NDgucG5n/original/loKnfV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NjAucG5n/original/Negsxl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NzYuanBn/original/cX%2BVjT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NjEucG5n/original/O0WGet.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NzcuanBn/original/Z8jbMY.jpg]]
<p><em>The Trolley</em>&nbsp;is a first-person point and click&nbsp;narrative game about the sudden closure of a public transportation system in a fictional Rustbelt American city.&nbsp;</p>
<p>Set in the late 1950s,&nbsp;<em>The Trolley</em>&nbsp;invites players complete tasks in order to dismantle an incline railroad of a recently discontinued trolley line. As the player boards up the gatehouse, disposes of paperwork, and performs other closure duties, they are given a series of inner monolog choices that reflect on urban infrastructure, labor, and technological progress.</p>
<p>The stories, environments, architecture, and scenery are all pulled from extensive research <a href="http://doubleunderscore.net" rel="nofollow noopener">Nicholas O’Brien</a> has conducted over the past two years. The often untold narratives of the trolley closures from LA to Atlanta, Cincinnati to Pittsburgh interweave throughout this game. Using conventions from experimental filmmaking, essayistic moving image work, and contemporary story-driven indie games,&nbsp;<em>The Trolley</em>&nbsp;ask players to contemplate the ways in which the absence of the trolley has reshaped American civic space.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2LzY5MTM2Mi5qcGc=/original/am3Dt2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2LzY5MTM5Mi5wbmc=/original/cqq38z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2Lzk2MDA2Mi5wbmc=/original/b5yRY%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2Lzk2MDA2My5wbmc=/original/m%2BpMmA.png]]
<p><strong><em>The Twine® Grimoire</em></strong> is an unofficial introduction to using CSS and HTML to customize the appearance and behavior of projects made in Twine 2.0! This first volume is an 84 page, 100% <strong>free</strong> PDF which contains <strong>6 detailed tutorials</strong> on:</p>
<ul><li>Installation &amp; Getting Started</li><li>Text Styling</li><li>Link Styling</li><li>Customizing Passages</li><li>Customizing Backgrounds</li><li>Embedding Images</li></ul>
<h4 class="text-justify">Features:</h4>
<p>Each section discusses both&nbsp;<strong>SugarCube</strong> and <strong>Harlowe</strong> Story Formats, with emphasis on the most recent versions.</p>
<p class="text-justify">Other features discussed include: <strong>tag-based styling, </strong>using the <strong>CSS Stylesheet</strong>, usage of <strong>macros</strong> and <strong>named hooks</strong> in Harlowe, how to <strong>organize your files</strong>, and other topics. There are<strong> screenshots</strong> and<strong> examples of code</strong> provided throughout each tutorial. <br></p>
<p class="text-justify">The aim of this project is to demonstrate how <strong>CSS and HTML</strong> can be used in a variety of Twine 2.0 Story Formats as a method of fine-tuning a game’s visuals. The information in these tutorials is <strong>not compatible</strong> with previous versions of Twine such as Twine 1.4.2. These tutorials are suitable for <strong>beginner to intermediate users</strong>, and this first volume is geared toward common features that many first-time users are interested in working into their projects.   <br></p>
<h4>Other helpful resources:</h4>
<ul><li><a href="https://twinery.org/" target="_blank" rel="nofollow noopener">Twinery.org</a></li><li><a href="https://twinery.org/wiki/" target="_blank" rel="nofollow noopener">Twine Wiki</a></li><li><a href="https://twinery.org/cookbook/" target="_blank" rel="nofollow noopener">Twine Cookbook</a>&nbsp;<br>
</li><li><a href="https://twinery.org/wiki/twine2:guide" target="_blank" rel="nofollow noopener">Twine 2 Guide</a><br>
</li><li><a href="https://twinery.org/forum/" target="_blank" rel="nofollow noopener">Twinery Forums (Read-Only)</a><br>
</li><li><a href="https://twinery.org/questions/" target="_blank" rel="nofollow noopener">Twine Q&amp;A</a><br>
</li><li><a href="https://intfiction.org/c/authoring/twine" target="_blank" rel="nofollow noopener">Intfiction.org Twine Category</a><br>
</li></ul>
<p>
</p>
<p>More resources, including links to Story Format documentation, can be found in the PDF.<strong><br></strong></p>
<h3>Notes:</h3>
<p><strong>Thank you</strong> to all of my <a href="http://patreon.com/grimoirtua" rel="nofollow noopener">patrons</a> whose support made it possible for me to take the time to write these tutorials, revise them, and compile them into a single free PDF! Thank you also to <a href="https://twitter.com/videlais" rel="nofollow noopener">@videlais</a> for his work on the Twine Cookbook, to which I've had the pleasure of contributing, Ken Alba for his support and interest in my tutorials as an educator, and especially <a href="https://twitter.com/klembot" rel="nofollow noopener">@klembot</a> for creating Twine!</p>
<p>In the interest of making this resource as accessible as possible to many users, the <em>Grimoire</em> will never have a minimum donation required to download.<br></p>
<h3>About Twine:</h3>
<p><strong><em>Twine</em></strong><em><span class="">®</span> is an “an open-source tool for telling interactive, non-linear stories” originally created by Chris Kilmas in 2009; it is now maintained by “a whole bunch of people at <a href="https://github.com/tweecode" rel="nofollow noopener">several</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener">different</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener">repositories</a>,” per Twinery.org. I am in no way affiliated with its development process. Twine is also a registered trademark of the <a href="https://iftechfoundation.org/" rel="nofollow noopener">Interactive Fiction Technology Foundation</a>. </em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzAucG5n/original/SPe0oC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDQxOTUucG5n/original/YIGLZd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzIucG5n/original/GasfNQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExNDIucG5n/original/EtzFiw.png]]
<p></p>
<p>This game was created using RPGmaker MV&nbsp;over a week in July of 2020 for the Portland Indie Game Squad (PIGSquad)&nbsp;<a href="https://itch.io/jam/ssjturnbased">June Summer Slow Jam</a>. The technical theme was "Music first" and the creative theme was "Ghost notes"&nbsp;<br></p><p>**6/4/2021 This game is now apart of the <a href="https://itch.io/b/902/indie-bundle-for-palestinian-aid">Inde bundle for Palestinian Aid</a> if you are going to drop some money for this game, I highly encourage you do it through this bundle! &nbsp;Through the duration of the bundle if I do receive anything from this game, I will donate it <a href="https://www.unrwa.org/gaza-emergency" target="_blank" rel="nofollow noopener">UNRWA</a>! **<br><br><br><br>*** Music and Sound volume has been reduced by half, this is a game, not a dance club***<br><br>
Play as the wanderer known as Key, as they check out what happened to the music of the Neon Vibe Realm.&nbsp; With their trusty key tar, and the aid of a van driving jellyfish, they&nbsp;set out to defeat the ghostly Maestro!<br><br>&nbsp;Tackle each area in any order! The music changes as you go!</p>
<p>Talk to the 'mini' van in the starting area to turn on "Story" mode if you want to<br>trivialize combat!</p>
<p>Player Input:</p>
<ul><li>Arrow Keys( Up/Down/Left/Right): Movement and Menu navigation</li><li>ESC /X: To bring up the menu</li><li>Either Shift key: Dash</li><li>Z: To interact and Choose menu Item.</li></ul>
<p>Credits:</p>
<ul><li>Title text: Sins Font from Humble Fonts by&nbsp;<a href="http://somepx.itch.io/">Eeve Somepx</a></li><li>In game font and sfx from RPGMaker core assets</li><li>Programming, Art, and Music by me!</li></ul>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3NzYucG5n/original/hr5Vr6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3ODAucG5n/original/xD7957.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3ODEucG5n/original/tQWeNU.png]]
<p class="text-center">One lazy morning an old man wanders into a witch's shop. The young witch <strong>Marjolaine</strong> greets him at the counter.<br></p>
<p class="text-center">The old man produces a box which he claims to contain his heart, and asks for it to be delivered. <br></p>
<p class="text-center">The store's owner, the wise Madame Odette,  refuses to do business with the man, but a revelation leads the apprentice to accept the request, even if it is against her master's wishes.<br></p>
<p class="text-center">&nbsp;With nothing but a picture to go on,<strong> </strong><strong>The Witchling</strong> heads out into the city.<br></p>
<p><img src="https://img.itch.zone/aW1nLzMyMzk3OTAuanBn/original/%2F2Wd6d.jpg" loading="lazy"></p>
<p class="text-center">FEATURES:
</p>
<p class="text-center">10k Word long script.<br>13 Sprited Characters<br>4 Backgrounds<br>5 Original Songs</p>
<p><br></p>
<p class="text-center"><em>UnfinishedCircl's Submission for NaNoRenO 2020</em><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk3OTEuanBn/original/Jtth5J.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk3OTMuanBn/original/LhU4R1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk4MzUuanBn/original/Ze%2FR81.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyNTM2NTMuanBn/original/DVkJmD.jpg]]


<p><em>“ I've died so many times, I'm not quite sure who I am anymore. ”</em><br></p>
<p><em>-Unattributed, scrawled in the margins of the Book of Deeds</em>&nbsp;</p>
<p><br></p>
<p>The&nbsp;<strong>Words and Deeds of the Chain of Tlachic&nbsp;</strong>is a system agnostic campaign frame for fantasy roleplaying games. Players play as the Dwarven Chain of Tlachic, a clan of 66 Dwarves that have recently been freed from a thousand years of slavery at the hands of the sorceress queen known as the Red Lady. In the wake of her defeat, the Dwarves begin reclaiming their ancestral home that she made her fortress, recovering the artifacts of their heritage and destroying what’s left of her servitors.</p>
<p>&nbsp;<br></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNjMucG5n/original/am4din.png" alt="Underworld Map" title="Underworld Map" loading="lazy"></p>
<figcaption>Currently mapped caverns, unknown cartographer</figcaption>
<p></p>
<p>These adventures are deadly, but the Dwarves of Tlachic have a gift: they never die. Whenever a Dwarf falls, they rise again from the Unzerat Forge, and return to the fight in a future session.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzQzNzcyMTQucG5n/original/xsMSaX.png]]
<p><em>The world is ending in one week. This we know for a fact. It is too late to stop it. It cannot be slowed down anymore. Especially not by you, because you are just a group of large dogs. All you can do is try and make the final days as best as you can for those that are near and dear to you. Your owners, your community, the other wild dogs in the park, whoever you hold dear.</em>   </p>
<p><strong>The World is Ending and We Are Very Large Dogs</strong> is a GM-less collaborative storytelling game for 2+ players, wherein the players work to weave stories of bright moments in the face of Armageddon. The mood, intensity and tone of this game are up to you, the players, to decide,&nbsp;as&nbsp;the&nbsp;adaptable&nbsp;ruleset&nbsp;is&nbsp;designed for anything&nbsp;from a&nbsp;pulpy&nbsp;Mars&nbsp;Attacks-esque&nbsp;alien&nbsp;invasion&nbsp;to a&nbsp;a&nbsp;dark, mournful, melancholic ending.</p>
<p>---</p>
<p>This is version 1.0 of Very Large Dogs, however if you purchase it you will recieve any updates or revisions free of charge.<br>  
  </p>

[img width=500 [https://img.itch.zone/aW1nLzQ5NzgwNDYucG5n/original/TABVzn.png]]
<p>worm simulator for 0-4 players.&nbsp;</p>
<ul><li>be a worm</li><li>eat plankton (or don't)</li><li>change color, shape and size</li><li>includes various settings for alternate play modes</li><li>includes a screensaver mode</li></ul>
<p>with sound by Everest Pipkin</p><p>mac build by&nbsp;<a href="https://twitter.com/whadit?s=20" rel="nofollow noopener">@whadit</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzYwMDYuanBn/original/dyoqoq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NDcuanBn/original/IPjY3l.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NDguanBn/original/yJb%2BHh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzYwMDUuanBn/original/YPZj7E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NjguanBn/original/4LEL%2B6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NzEuanBn/original/Fr3IOT.jpg]]
<p>
	<br>
</p><h1 style="text-align: center">THERE YOU GO <small>by</small> OCTOGEAR GAMES</h1><p style="background-color: #161616; padding: 20px 20px">
	<a><em>There You Go</em></a> is a short (around 15 minutes) isometric puzzle game about rooms, puzzles, puzzle rooms, and rooms with puzzles. It has about 10 rooms, each with its own set of riddles, and even contains some easter eggs.
	<br>
	<br>
	So go ahead and download it for free below, and let me know what you think! This is my first game, so getting any and all feedback would be greatly appreciated.
</p><h1 style="text-align: center">TESTIMONIALS</h1><p style="background-color: #161616; padding: 20px 20px">
	<em>"It was really fun"</em>
	<br>
	<br>
	<em>"If I don't finish that Colour mix puzzle this century I'm going to throw my PC out the window!"</em>
	<br>
	<br>
	<em>"It was great and I now await chapter II"</em>
	<br>
	<br>
	<em>"Did I find all the easter eggs? I DON'T KNOW IF I FOUND ALL THE EASTER EGGS!!"</em>
</p><p style="background-color: #161616; padding: 10px 20px 0 20px; text-align: center">Also available on Google Play: <a href="https://play.google.com/store/apps/details?id=com.octogear.thereyougo&amp;utm_source=itchio&amp;utm_medium=website&amp;utm_content=googleplaybutton&amp;utm_campaign=itchio" rel="nofollow noopener"><img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" width="236" loading="lazy"></a></p><p>
	<br>
</p><p style="text-align: center">
	CREATED BY 
	<br>
	<a href="http://octogeargames.com" target="_blank" rel="nofollow noopener"><img src="http://octogeargames.com/images/logo.gif" alt="Octogear Games" loading="lazy"></a>
</p><p>
	<br>
</p><p style="background-color: #161616; padding: 20px 20px">
	<a><em>There You Go</em></a> is completely free of charge, but if you enjoyed it and feel like it was worth a bit of cash - I won't stop you from donating via itch.io.
</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM2NzE4LmdpZg==/original/dgsdR2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0NDQ0LnBuZw==/original/ZimXzf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0MzQ3LmdpZg==/original/uCa1jh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0NDQ1LnBuZw==/original/JSQews.png]]
<p>These Lands is a virtual reality puzzle adventure game that leaves you marooned on an island. Following the footsteps of a long lost explorer, you must solve the puzzles to unearth the mystery hidden within. Only the most skilled, logical and brave adventurers will survive These Lands...... will you?<br></p>
<p><img src="https://img.itch.zone/aW1nLzE5ODY3MDYucG5n/original/2L%2FDik.png" loading="lazy"></p>
<ul><li>Rich story revealing the mysteries of These Lands.</li><li>Become completely immersed in this beautiful low poly world.&nbsp;</li><li>Solve mind-bending puzzles across multiple levels while exploring These Lands.&nbsp;</li><li>Want to throw something, anything, everything? hundreds of interactive objects to play with.&nbsp;</li><li>Find all messages left behind by the long lost explorer who came before you, revealing a secret lost for millennia.</li><li>Room scale VR Experience designed for the HTC Vive and Oculus Rift</li></ul>
<p>Note: No bindings for Knuckles V2 at the moment sorry! The game runs on Oculus Quest, but some interactions may not work.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/kug00gMb_mg" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNDkwMTguZ2lm/original/ZS5%2FkQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTcuanBn/original/tdjlBx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjYucG5n/original/gQ7p1g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjcuanBn/original/cwUyme.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTkuanBn/original/NpRdVq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMzUuanBn/original/n09%2Bt9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTguanBn/original/C1z7Si.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjQuanBn/original/%2FJMTnt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjUuanBn/original/zL2bVB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjEuanBn/original/wCZXuT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjIuanBn/original/Zq1htD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjMuanBn/original/9onIv6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjAuanBn/original/x2KKyy.jpg]]
<p>They Bleed Pixels, the&nbsp;cult classic platforming slash-em up is now available on Itch!&nbsp;</p>
<p>As an anonymous student of the Lafcadio Academy for Troubled Young Ladies, you must battle through your nightmares to defeat a curse that’s slowly transforming your body into a clawed demonic form.&nbsp;</p>
<p>They Bleed Pixels balances a perfect mix of fast-paced acrobatic platforming and fierce, one-button, slash’em up combat. By suppressing your urge to button mash in favour of focusing on stylish and smart kills, you are rewarded with checkpoints you can choose when to place for safety... or try your luck by holding onto them for extra bonus points.<br></p>
<p>Features:</p>
<ul><li>Hardcore original difficulty, plus an easier novice mode, to match a wider range of skills.&nbsp;</li><li>Striking art style mixes low-fi pixel art with organic ink and paper textures.&nbsp;</li><li>Original electronic soundtrack by DJ Finish Him (aka Shaun Hatton) composed with synthesizers, unconventional instruments and gadgets often not meant for musical use.</li><li>Unlock bonus guest levels + illustrations by comic and game artists from around the world.</li><li>Becoming a monster stabbing master or platforming speedrunner with individual level rankings, leaderboards and 150 skill-based badges.&nbsp;</li><li>Lush gothic-cute motion comics tell the story of a young girl haunted by eldritch nightmares.</li></ul>
<p><em><br></em></p>
<p><em>“Gothic brutality shines brightly throughout this blocky, blood-soaked indie platformer.” -&nbsp;</em><strong>8.2/10</strong>&nbsp;<em>-</em> IGN</p>
<p><br></p>
<p class="text-center"><strong>MORE INFO AT:<br></strong><strong>&nbsp;<a href="http://www.theybleedpixels.com" rel="nofollow noopener">www.theybleedpixels.com</a></strong></p><p class="text-center"><strong>ALSO AVAILABLE ON THE NINTENDO SWITCH™</strong><br><strong>eShop: <a href="https://www.nintendo.com/games/detail/they-bleed-pixels-switch/" rel="nofollow noopener">US</a> | <a href="https://www.nintendo.co.uk/Games/Nintendo-Switch-download-software/They-Bleed-Pixels-1859334.html" rel="nofollow noopener">UK</a> | <a href="https://store-jp.nintendo.com/list/software/70010000028528.html" target="_blank" rel="nofollow noopener">Japan</a></strong></p><p><br></p>
<p><strong>DRM FREE!</strong></p>
<p><strong>GAMEPAD HIGHLY RECOMMENDED.</strong></p>
<p><strong>STEAM ONLY FEATURES:</strong>&nbsp;Online features such as online leaderboards and replay data&nbsp;require the Steam version.</p>
<p><strong>MAC PLAYERS: </strong>They Bleed Pixels is&nbsp;64-bit and <strong>will run </strong>on&nbsp;MacOS Catalina.&nbsp;&nbsp;<em>However it is unsigned and may require you to turn off some security to run!</em></p>
<p class="text-center"><strong><a href="https://djfinishhim.bandcamp.com/album/they-bleed-pixels-on-the-dance-floor" target="_blank" rel="nofollow noopener">BUY THE SOUNDTRACK BY DJ FINISH HIM ON BANDCAMP!<br></a></strong></p>
<p class="text-center"><u><strong><a href="https://www.youtube.com/watch?v=6SzO9Ski5p8" rel="nofollow noopener">COMING SOON TO NINTENDO SWITCH™</a></strong></u><strong></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/7X42GIOfuYo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTM4NTMuZ2lm/original/569BEd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwMDUuanBn/original/BGz%2FOH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTM5OTMuanBn/original/9MccLq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwMTAuanBn/original/XWU%2F0D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwNDYuanBn/original/zfnvAK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwNTMuanBn/original/dtu4KD.jpg]]
<p><br></p>
<p>Launch your missiles to intercept the incoming attack and defend your planet from a relentless alien invasion.</p>
<p>Intuitive one-tap gameplay in a remix of a classic retro arcade game with a challenging new twist.</p>
<p>Endless waves of ever-increasing difficulty will test the most skilled of players.</p>
<p>Conserve your limited ammunition by destroying multiple targets with a single shot for bigger scores.</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI4OTYuZ2lm/original/bUzgt8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODAucG5n/original/C%2FRjlj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODEucG5n/original/aQ%2BU%2Fs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODQucG5n/original/BW1fz%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODIucG5n/original/6YDOky.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODcucG5n/original/%2BzwNdv.png]]
<p><strong>THIRD EMPIRE</strong></p><p>Our terrible world is even worse.&nbsp;It is time to fight the gods of the past.&nbsp;Bleed out the bastards&nbsp;and feed the soil.</p><p><br></p><p>A game of guillotines, flourishing nature, liberation, metal and flesh. Inspired by Kenshi, Star Wars and&nbsp;One Seven&nbsp;Design's Lasers &amp; Feelings.</p><p><br></p><p><strong>Content Warnings:</strong>
</p>
<p>Embedded: Economic oppression, fascism, death, organized religion, blood.</p><p>Potential: Slavery (as an obvious evil), amputation, mutation, body horror, gore.</p><p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzU4MjM4MjIucG5n/original/QvaZUp.png]]
<p><em>This Body of Mine, I will Make it a Temple&nbsp;</em>is a single player introspective tabletop roleplaying game about mechs, recovering from a war time mindset, and making something your own through radical change. It is a game about trans experiences told through a fictional lens of a mech pilot coming home from war and trying to decide what their machine commonly used for death and destruction will become in times of peace.<br><br>This game also includes a small section with alternate rules to play this as a single player epilogue to any campaign you feel your character needs to retire, make peace with what they've done, and heal from the trauma they have both caused and endured.</p>
<p><br>To play this game you will need:&nbsp;A deck of tarot cards, some pen and paper, and tokens of some sort.<br><br>&nbsp;The cover image is illustrated by Mal Peters, you can find their work <a href="http://instagram.com/malachi_makes_art" target="_blank" rel="nofollow noopener">here</a></p>

[img width=500 [https://img.itch.zone/aW1nLzU1NzI2MzkucG5n/original/Ovsp3E.png]]
<p class="text-justify"><strong><em>this discord has ghosts in it </em></strong><em></em>is a game of entering and exploring a haunted house filled with ghosts. that haunted house is a discord.&nbsp;</p>
<p class="text-center">in this game, players are either <strong>investigators </strong>or <strong>ghosts</strong>.&nbsp;</p>
<p class="text-center"><strong>investigators </strong>can only speak <br></p>
<p class="text-center"><strong>ghosts </strong>can only type</p>
<p class="text-justify">the discord is split up into rooms of a haunted house. <strong>ghosts </strong>haunt rooms and type their horror into them. <strong>investigators </strong>explore each room all while narrating the horror to all players. <strong>ghosts </strong>will reveal parts of themselves by creating new rooms, inspiring horror, and making the house a labyrinth.&nbsp;</p>
<p class="text-justify text-center">this game is for two to twelve players, played over the course of one to three hours.</p>
<p class="text-center"><strong>credits</strong><br></p>
<p class="text-center">design by adam vass and will jobst</p>
<p class="text-center">writing and development by will jobst <br></p>
<p class="text-center">additional writing by adam vass</p>
<p class="text-center"><em>the difference between ghosts and poltergeists</em> by seb pines (@smolghost)</p>
<p class="text-center">cover and layout by adam vass</p>
<p class="text-center">playtesting by Adam Bell, Paul J Hodgeson, AE Jonesy, Simon Moody, and Viditya Voleti<br></p>
<p class="text-center"></p>
<p class="text-justify"><br><strong>early access</strong><br>game is in early access. with your support, we will be able to dedicate more time and money toward developing this game. what’s next? we aim to improve and extend the rules, provide more optional rules, house templates, settings, discord bots, and more!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2ODYucG5n/original/onWs3q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2ODcucG5n/original/qi6ETF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2NTAucG5n/original/vBoP3%2F.png]]
<p>Help panda re-stack her building blocks blown over by the wind with your block stacking and problem solving!<br></p>
<p><strong>GAME PLAY FEATURES</strong><br>+ Over 50 levels of varying difficulty<br>+ Blocks stack and topple with realistic physics<br>+ 7 shapes and 6 colors keeps the game and patterns interesting<br>+ Ability to skip ahead or jump to a random level<br>+ Stacking building blocks is fun!</p>
<p><strong>LEARNING FEATURES</strong><br>+ Self-paced game play, low pressure, high enjoyment for young children<br>+ Find your own way to make space, sort and stack the blocks<br>+ Panda animation and musical cues provide feedback on progress<br>+ Game play promotes pattern recognition, shape and color matching and problem solving</p>
<p><strong>PLATFORMS</strong></p>
<p><strong>MacOS</strong>: 64bit 10.9 and above. Tested on 10.12.</p>
<p><strong>Windows</strong>: 64bit Windows 7 and above. Tested on Windows 10.</p>
<p><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/dBJxhIAeEGA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0OS5qcGc=/original/mK%2F7%2F3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0OC5qcGc=/original/mCcjpM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0Ny5wbmc=/original/BDAKEH.png]]
<p>Your players&nbsp;live in a highly advanced town filled with brilliant scientists and a state of the art super-collider, that seems to be having an issue. Now the day keeps resetting, and your players are the only ones that seem to be aware of it. Can they find the answer to why the day is resetting, or are they doomed to relive this day forever?</p>
<p>Gameplay can be gotten into in as little as 15 minutes, and all that's needed is one 10 sided die to play, and one optional 6 sided die to roll for character creation if desired. Works for groups of players ranging from 3 and up (including game master) and of any age or experience level. It can be played in person, or over voice or video call. Games can range from 2-4&nbsp;hours.</p>

[img width=500 [https://img.itch.zone/aW1nLzQ3MDg1NzQuanBn/original/LgcjkP.jpg]]
<p class="text-center"><a href="https://apps.apple.com/us/app/tic-tac-crow/id1554598446" rel="nofollow noopener">Tic-Tac-Crow is also available on iOS! My first mobile game! &lt;3</a><br></p>
<h3 class="text-center"><em>what is this?</em></h3>
<p>This is a little ambient bird garden simulator that evolves as you play. Birds come and go, and in the meantime you can play tic-tac-toe with them:<br></p>
<ul><li>Sparrows.</li><li>Crows. <em>(my favourite.) (plus a special crow that might be a raven?)</em></li><li>Flocks of pigeons.</li><li>Sulphur-crested cockatoos.</li></ul>
<p>Also a<strong> goose</strong> will be added soon in an update! If you have any requests, please let us know in the comments what other birds you'd love to see :)<br></p>
<p>And, though we don't have a video up yet, the game has very nice subtle ambiences and the sounds of little pitter-pattering, wings flapping, tweeting, cawing, and crowing for you to enjoy, even when you don't feel like playing a game of tic-tac-toe.<br></p>
<h3 class="text-center"><em>p.s. the nemesis system</em></h3>
<p>If you're reading this, <a href="https://patents.google.com/patent/US20160279522A1/en" target="_blank" rel="nofollow noopener">the Nemesis system patent</a> is in effect (or is just about). When I set out to make a game for the Nemesis Jam, I really wasn't expecting to find the document so educational and inspiring.</p>
<p>The working title for <em>Tic-Tac-Crow</em> was <em><a href="https://itch.io/jam/nemesis-jam/topic/1217008/my-tic-tac-toe-nemesis-is-a-sulphur-crested-cockatoo-belated-devlog" target="_blank">"My Tic-Tac-Toe Nemesis is a Sulphur-Crested Cockatoo!"</a></em>; it was made for the <a href="https://itch.io/jam/nemesis-jam" target="_blank">Nemesis Jam</a>, a prompt to&nbsp;"make something in any way regarding this system." So, I made a game about birds with individual traits and parameters <em>(My system calls them STATS and QUIRKS)</em> that change in response to player action and other things... and we crafted a living, breathing world out of this dynamic. Birds play against each other, and you can see their individual personalities in motion!
</p>
<p>There's no way to explicitly view these in-game (you can dig through the save file, it's pseudo-plaintext), but STATS are numerical values that every bird has (e.g. their hidden <em>level</em> is directly related to how good their Tic-Tac-Toe-playing AI is), while QUIRKS are pairs of triggers and reactions.</p>
<p>e.g.</p>
<ul><li>When my opponent cheats, I cheat back.</li><li>When the player joins my table, I make a happy noise.</li></ul>
<p>I think this all combines to create a great sense of individuality between birds, and it's something I'd like to continue using in future projects - as well as continue to work on this one.</p>
<p>I don't even know if what I've developed constitutes patent infringement or not, and it's frustrating to imagine a future where game design is fraught with this type of worry.</p>
<p>There's not much I can do about patent law, but maybe this tiny protest will make a tiny difference.</p>
<p><em>(Also, I'm publishing it on the App Store soon, which will hopefully serve to lend it extra legitimacy!)</em><br></p>
<h3><em>who made this?<br></em></h3>
<p>droqen</p>
<p>h heron</p>
<p><del>redacted<br></del></p>
<p>also, thanks to everyone&nbsp;in my <a href="https://discord.gg/GndqqqjAHU" rel="nofollow noopener">playtest discord</a> &amp; to <a href="https://www.patreon.com/droqen" rel="nofollow noopener">my 27 lovely patrons</a>!<br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY4NjUucG5n/original/wKrK0o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY5NjAucG5n/original/dw0WzE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY5NjQucG5n/original/tap4BM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY4NTMucG5n/original/s7vuZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY3NzEucG5n/original/d0Y80D.png]]
<p>Tile Crusher is a puzzle game where the objective is to eliminate all destructible tiles with the wrecking ball.  The catch is that you have a limited number of turns to clear the tiles, and if you run over a previously destroyed tile, it will be restored!  Plan your movements before committing to them!</p>
<p><strong>Game Features</strong></p>
<ul>
<li>100 levels</li><li>Six different tile types to give your brain a workout</li><li>Control the ball with either the mouse, directional keys, or WASD</li></ul>
<hr>
<p><strong>UPDATES</strong></p>
<p><strong>1.1 - </strong>Minor change to the buttons, they look a little nicer now.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4NS5wbmc=/original/T10nrC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4Ni5wbmc=/original/4Ow8uY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4Ny5wbmc=/original/X0oACY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4OC5wbmc=/original/eMNGG3.png]]
<p>The world blurs into shape, and that shape is fractal; a million-million shattered realities, folding into each other like thin sheets of metal forming a single blade, a blade dangling overhead, a temporal Sword of Damocles, smoking with bloody execution. Around you; swirling, churning chaos: a golden staircase, walls of polished marble, etched with mystic runes.</p>
<p>You have little to no memory of where you are, or what has brought you here. The figures at your side are familiar but unrecognized, like staring at your own reflection through a fogged mirror.
</p>
<p><strong>“FOOLS,”</strong> a voice from on high booms.&nbsp;<br><strong>“YOU ARE TOO LATE!”</strong></p>
<p>Far, far above, the Warlock cackles wildly, mantled in coruscating sorcerous power. The ritual nears completion.
</p>
<p><br></p>
<p>TIME KNIFE is a short adventure for Troika!&nbsp;<br></p>
<p>This product is an independent production of The Melsonian Arts Council.</p>
<p>Redistribution without prior written consent is prohibited. Permission is granted to photocopy and otherwise reproduce for personal use. The author retains the right to be identified as such. In all cases this notice must remain intact.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjQucG5n/original/D5PmAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjMucG5n/original/OMhB%2BW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjIucG5n/original/ntnW7T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjAucG5n/original/39NOWW.png]]
<h1>Welcome to the timeweave, Agent</h1>
<p>In <strong>Timespell</strong>, you play elite agents fighting a multi-dimensional Time War originating from an Apotheosis, one of the successful and powerful paradigms at the singularity apexs of the timelines. Each Apotheosis wants its ideals to reign supreme up and down the timestream.&nbsp;<br></p>
<p>You serve on diverse missions to twist and wrestle the time currents to your end. Sometimes you warp in fifteen minutes early to lay waste to two entire advanced orbital battle fleets, bringing cruisers crashing to devastate the planet below, ending a space empire. Other times you infiltrate for the purpose of removing one specific linchpin around which a history evolves: a doctor who develops a necessary vaccine; the anarchist who starts a war. And sometimes you find yourself embedded for a lifetime, subtly pushing an entire people to change to achieve the goals of your Apotheosis.</p>
<p>But—you have a problem.&nbsp;</p>
<p>You might be falling in love with an agent on the other side. You have been receiving letters from them, hidden in sabotaged missions.</p>
<p>###<br></p>
<p>In Timespell, 2-5 players are agents falling in love with other agents in a time war, and one player is the Weaver, a GM-like guide and watcher.&nbsp;Gameplay follows scenes of each agent's deployment to win a moment in time sabotaged by another agent who is leaving a message. The messages increase in emotional intensity until one agent falls in love with another, and then they all try to escape the war.&nbsp;</p>
<h2>From the depths of time</h2>
<p>Timespell is a deep appreciation of <strong><em>This Is How You Lose the Time War</em></strong>, a science fiction epistolary novel by Amal el-Mohtar and Max Gladstone wrapped in the beautiful poetry of the tabletop roleplaying game <strong><em>Wolfspell</em></strong> by Epidiah Ravachol, found at <a href="http://www.worldswithoutmaster.com/" rel="nofollow noopener">www.WorldsWithoutMaster.com</a>. Both are advanced pieces of technology stolen from the future and brought back in time and I highly recommend them.<br></p>
<p>This is a first draft of the game currently in playtest. If you do download and try it out, my heartfelt thanks! I'd love your feedback. Your support means I&nbsp;can polish it up.</p>
<p>If you want a download code, let me know and I'll send it to you.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODY1NjU4LzQ4NjE1MjEucG5n/original/S9AC96.png]]

<p>Tiny Terrors&nbsp; has ten teeny creatures inspired by literature and pop culture&nbsp;for your 5e game.&nbsp;</p>
<p>Featuring:&nbsp;</p>
<p>Babble Slug<br>Cheshire Cat<br>Curious Kitten<br>Deaddy Bear<br>Faithful Hound<br>Jackalope<br>Literary Spider<br>Psychic Pig<br>Puss in Boots<br>Tripples</p>
<p>Tripples art by David Markiwsky</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTcucG5n/original/oE23gs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTkucG5n/original/XUWDEi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTgucG5n/original/ne%2Bk96.png]]

<p>languages: english / 日本語 / deutsch / español /&nbsp;français / 한국어 /&nbsp;繁體中文</p>
<p>~</p>
<p>TOMATO CLINIC is looking for humans interested in taking a tour of a blood donation clinic! learn a few things about vampire life and vampire culture, and if you want, you can even donate blood at the end of the tour.</p>
<p>~</p>
<p><strong>TOMATO CLINIC</strong>&nbsp;is a visual novel about going on a tour at a vampire blood donation clinic.</p>
<p>play time is ~30 minutes with multiple endings.</p>
<p>the game is free, but if you pay $3 or more, you can support me in my game-making adventures &amp; also receive a digital art collection that includes all art from the game along with design sketches!</p>
<p><a href="https://npckc.booth.pm/items/2081799" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM1NjY3ODkucG5n/original/dW2DLF.png" loading="lazy"></a><br></p>
<p>collab keychains with furoshiki labo&nbsp;are also available <a href="https://npckc.booth.pm/items/2081799" target="_blank" rel="nofollow noopener">HERE</a>!</p>
<p>~</p>
<p>CREDITS:</p>
<p>story/code/art by&nbsp;<a href="https://npckc.site/" rel="nofollow noopener">npckc<br></a>music by&nbsp;<a href="https://sdhizumi.bandcamp.com/" rel="nofollow noopener">sdhizumi</a> (soundtrack available <a href="https://sdhizumi.bandcamp.com/album/tomato-clinic-original-soundtrack" rel="nofollow noopener">here</a>)<br>translation by 鬼怒川 (zh), kyleheren (ko), gudrun palomino &amp; isabel fernández (es),&nbsp;&nbsp;john madness (fr),&nbsp;marshmelieee (de)</p>
<p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2539146973/size=large/bgcol=ffffff/linkcol=b0413e/tracklist=false/artwork=small/transparent=true/"><a href="http://sdhizumi.bandcamp.com/album/tomato-clinic-original-soundtrack" rel="nofollow noopener">TOMATO CLINIC Original Soundtrack by sdhizumi</a></iframe></p>
<p>special thanks to cloverfirefly &amp; armin!<br></p>
<p>~</p>
<p>other things i've worked on can be found&nbsp;<a href="https://npckc.itch.io/" target="_blank">here</a>! you can comment right here or on&nbsp;<a href="http://twitter.com/npckc" target="_blank" rel="nofollow noopener">twitter</a>&nbsp;with your thoughts.&nbsp;</p>
<p>if you like my work and want to support me, you can buy me a&nbsp;<a href="http://ko-fi.com/npckc" target="_blank" rel="nofollow noopener">coffee</a>&nbsp;or&nbsp;check out my&nbsp;<a href="https://patreon.com/npckc" rel="nofollow noopener">patreon</a>!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTcucG5n/original/JYw0GB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTgucG5n/original/JuOP9%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTkucG5n/original/mspV%2BO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg3MDAucG5n/original/7mUQHA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg3MDEucG5n/original/7fOfez.png]]
<blockquote>In a tavern near the docks of a small coastal town, a drunk fisherman claims he found the burial place of a religious leader of the long lost Swine Empire.<em> “No doubt it’s full of treasure,”</em> he promises. He scratches a map on the table. <em>“It’s right there, and I haven’t told anyone, except for some Rats who bought me drinks earlier today.”</em></blockquote>
<p>Explore an ancient tomb! Find treasure! Meet rat pirates! Don't get eaten by crocodiles! Or maybe do!</p>
<p>Tomb of the Swine Prophet is a small dungeon for analog adventure games like <a href="https://monkeys-paw-games.itch.io/unconquered-free-artless-edition">Unconquered</a>, <a href="https://yochaigal.itch.io/cairn">Cairn</a>, <a href="http://vanillagame.carrd.co/" rel="nofollow noopener">The Vanilla Game</a>, <a href="https://micah-anderson.itch.io/bastards">Bastards</a>, <a href="http://tunnelgoons.com" rel="nofollow noopener">Tunnel Goons</a>, and many more.</p>
<p>It can be dropped into most fantasy adventure campaigns and completed in a single gaming session. It is an eleven room dungeon. Five rooms are described, and there is a d20 Random encounter table to describe the other rooms, so the adventure may be different every time it is played. A d12 treasure table and old school creature stats are included.</p>
<p>It can be printed on a single sheet of paper, front and back.</p>
<p><img src="https://img.itch.zone/aW1nLzU0OTIzMDIucG5n/original/g%2Bjqop.png" loading="lazy"><br></p>
<p>This and much more can be downloaded for $2 a month at <a href="http://Patreon.com/HPS" rel="nofollow noopener">Patreon.com/HPS</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDIuanBn/original/WyexH1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDMuanBn/original/Nlpehl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDEuanBn/original/gTXE4y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNzEuanBn/original/1SNyPd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTcuanBn/original/cRNUEe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTUuanBn/original/YoGaSu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTYuanBn/original/cPFE%2BW.jpg]]
<p>Top of the Table Soccer (TOTTS) is a competitive two-player role-playing game that simulates a game of soccer.&nbsp;</p>
<p>To play this game you need a pencil, eraser and a fist full of six-sided dice.&nbsp;</p>
<p>The mechanics for TOTTS are simple, yet winning a match requires lots of strategy and a dash of luck.</p>
<p>The game is designed to incorporate a role-playing element, which encourages players to weave their own narratives into any given match. The goal of TOTTS is to beat your opponent, but also tell the story of how that happened.</p>
<p>Please rate this game and let me know what you think about it in the comment section below. <br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTA4MTQxLzU1NTI0MDguanBn/original/i7%2FiOL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA4MTQxLzU1NTI0MjAuanBn/original/YVgFuW.jpg]]
<p>TORO is a music toy about&nbsp;an orange matador and a blue bull.<br><br>Move the mouse to maneuver the matador and hold the mouse button to call the bull.<br><br>Lead the bull to the pins but don't let it collide with the boundaries or matador.</p>
<p>This was made for the Locally Sourced Summer Bundle.</p>

[img width=500 [https://img.itch.zone/aW1nLzQwODE4MDMuZ2lm/original/PEvCRJ.gif]]

<h3>You wake up.</h3>
<blockquote>Your awakening is slow and feels strange. You must have slept for a long time.</blockquote>
<blockquote>As you float fitfully toward consciousness, you find yourself wondering if there is a word to describe the way one forgets a vivid dream after a long slumber. There really ought to be a word for such a thing.</blockquote>
<blockquote>You plumb the depths of your memory, but can't find it.</blockquote>
<blockquote>Actually, you can't find much of anything.</blockquote>
<p>Traveler is a short work of interactive fiction about identity, existence, purpose, and loss. It features&nbsp;four endings and infinite procedurally-generated planets.</p>
<p>Originally written in 2015 for <a href="http://yearbookoffice.com/lost-in-space-traveler" rel="nofollow noopener">The Yearbook Office</a>.&nbsp;Ending song:&nbsp;<em>Romance on Daybreak</em>&nbsp;by Jamie Sandel.</p>
<p>There are <del>three</del> four endings.</p>

[img width=500 [https://img.itch.zone/aW1nLzIzMTMzNzcucG5n/original/bPCZpX.png]]
<p>Everything changes eventually. The world turns and turns again until we’re adults and we’ve forgotten all the most important things, like laughter, wonder, and joy. The responsibilities of life hang on our backs, a heavy weight that pulls away from what’s important.&nbsp;</p>
<p>Today, you’ve said enough. Today you’ll go back and remember what matters. Today you will find treasure and keep it safe.</p>
<p>Treasure Box is a solo game about recalling, creating, and discovering precious memories and feelings from our childhood to save for later. The explorer will wander around their home, thinking of a childhood feeling, then find an item that reminds them of that feeling. The item will be catalogued, placed in a treasure box, and left there for another day.</p>
<p>For those who struggle with childhood memories, accommodations are added.</p>

[img width=500 [https://img.itch.zone/aW1nLzQyMzgwODYuanBn/original/OsSlFd.jpg]]
<p>Using the new Scrub System 1.0, Troupe is...</p>
<ul><li>80 pages, Illustrated.</li><li>A game about travel, discovery, and outsiderness.</li><li>A combination of the best of Old-School and Story Games.</li><li>Very, very weird.</li><li>Has giant killer ducks!</li></ul>
<p>I'm going to be adding more over time including illustrations, formatting, and general content.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzUzNDMxNjIucG5n/original/%2FliD0%2F.png]]
<p>A pamphlet detailing an ethical approach to LeGuinian magic for fantasy games and stories.</p>
<p>Magic systems are more than rules and lore. They have political potential.
  </p>
<p>Magic systems inform how we understand the world around us. 
  </p>
<p>Is the world full of things to be manipulated? To be exploited?
  </p>
<p>To exploit the world, we must first reduce it to a level of importance below us.
  </p>
<p>How would we justify exploiting things that have their own will?
  </p>
<p>Magic systems that center the user and their will over others create hierarchies and rifts between the user and the world, between living beings and dead things, between people and non-people. The real world and its hierarchies and economic systems inform our thinking in this way, so understandably that mode of thought would bleed into our make-believe worlds.
  </p>
<p>But what if a magic system didn’t reduce, but instead gave the world agency, and forced us to relate to the things around us, consider their desires, logic, and rights, and confront the consequences of our actions? 
  </p>
<p>It would make the world more <em>alive</em>.
  </p>
<p>This magic system was conceived by Ursula K. Le Guin in her young adult novel <em>A Wizard of Earthsea</em>, in which magic power comes from being recognized and truly known for who one is—by their <em>true name</em>.&nbsp;</p>
<p>Licensed under Creative Commons 4.0 International. Share, remix, commercial or non-commercial. Simply credit me and insert a URL to this page.</p>

[img width=500 [https://img.itch.zone/aW1nLzUzNjQ1NTgucG5n/original/LusIQR.png]]
<p>Here's a tool for designing and playtesting ttrpgs or other physical games. I made this to help myself update my old work,&nbsp;and hopefully&nbsp;it&nbsp;will&nbsp;help&nbsp;others. As far as I know, there aren't any decks made specifically for TTRPGs available elsewhere. I tried to make it applicable to card games and boardgames the best I could, but you may have to ignore a few points that don't apply.<br></p>
<p>If you're unfamiliar with design lenses, they are cards that help you to focus on an important topic across all aspects of the game without getting distracted by other things that need to be done. Each card contains a list of items to contemplate, most often phrased as questions to get you thinking. The goal is not to answer each question so much as it is to use them as a starting point to consider what might need to change. Game design is a massive domain, and each item on a card is approximately a whole twitter thread's worth of theory, so feel free to research a topic if you feel you could learn more about it.</p>
<p><br>There's no particular order you need to use them in, and my recommendation would be to take a break of at least an hour after using each card. If you're not working to a tight deadline, it can be easier to just pick a single card for the day and apply it to however many projects you're comfortable working on in a day.</p>
<p>Please address any accessibility requests to my twitter.</p>
<p>---</p>
<p>Pricing note: This design tool is not paywalled, but I ask $20 for it.</p>
<p>---</p>
<p>The "Crowdfunding" card is based largely on <a href="https://twitter.com/jaceaddax" rel="nofollow noopener">Riley Rethal</a>'s <a href="https://metagame.itch.io/punchgo">PUNCHGO!</a> and <a href="https://twitter.com/TrinityKStudio" rel="nofollow noopener">Trinity Knot Studio</a>'s <a href="https://trinityknotstudio.itch.io/tks-pre-crowdfunding-checklist">TKS Pre-Crowdfunding Checklist</a>, which are both great resources from <a href="https://twitter.com/kdavidson925" rel="nofollow noopener">Ken Davidson</a>'s <a href="https://itch.io/jam/ttrpg-resource-jam">TTRPG Resource Jam</a>.<br><br>This is a submission to TTRPG Resource Jam and Itch.io's Bundle for Racial Justice and Equality.<br><br>Feel free to give me a shout if you found these useful. I'd love to hear from you.<br> </p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNDgucG5n/original/LGsrXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTAucG5n/original/OWZZsi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNDkucG5n/original/mUbdes.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTQucG5n/original/V0%2ByCB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTMucG5n/original/oD8beo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTIucG5n/original/NwBhgp.png]]
<p>This was originally a little loop I did for Music Weeklies Fairy Tales&nbsp;challenge.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SLiqIIuQb_o" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1nLzU2NjI4NjIucG5n/original/GASKuc.png]]
<p>Turn-Based Champion is a local multiplayer RPG-BoardGame-PartyGame-VideoGame hybrid where you compete against monsters in turn-based battle and your friends in minigames to become the Champ! Master minigames or defeat bosses to stack up your trophies and earn the crown!<br></p><p>***It is HIGHLY recommended to use a controller for this game***</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/bAN8el5JAis" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDYzOS5wbmc=/original/BIJL1X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDY0MC5naWY=/original/SjD%2BDq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDY0MS5naWY=/original/A1XWwA.gif]]
const fs = require('fs')

// capitalise .jpg filenames everywhere they're referenced
// fix image relating to file: instead of file-

//const wikiPath = "../tenforwardwiki/www.skynet.ie/_leanaht/mopic/wikinew/";
const wikiPath = "../gsocwiki/www.skynet.ie/_leanaht/gsocwiki/";



var tiddlers = {};


	let months = {
		"January": "01",
		"February": "02",
		"March": "03",
		"April": "04",
		"May": "05",
		"June": "06",
		"July": "07",
		"August": "08",
		"September": "09",
		"October": "10",
		"November": "11",
		"December": "12",
	}

go();


/*

{
  "created": "20210507093048102",
  "text": "",
  "value": "83",
  "title": "Birthdays",
  "tags": "Expenses Gifts [[Bank: Monzo]] [[Pot: Gifts]] 💸",
  "modified": "20210527095550389"
}

*/

async function go(){
	var tiddlers = [];
	let rawdata = fs.readFileSync('palestineBundleGames.json');
	let games = JSON.parse(rawdata);
	//console.log(games);
	for (let i=0,j = games.length;i<j;i++){
		var game = games[i];
		var tiddler = {}
		tiddler.title = game.title;
		tiddler = addMoreInfo(tiddler,game.moreInfo);
		tiddler.url = game.url;
		if (game.description){tiddler.text = game.description}
			if (game.youtubeUrl){
				tiddler.text = tiddler.text + `\n\n<iframe width="720" height="450" src="${game.youtubeUrl}" frameborder="0" allowfullscreen></iframe>`;
			}
		if (game.screenshots){tiddler.text = addImages(tiddler.text,game.screenshots)}
		tiddlers.push(tiddler);
	}
	saveJsonToFile(JSON.stringify(tiddlers));
}

function addMoreInfo(tiddler,moreInfo){
	var keys = Object.keys(moreInfo);
	var tags = []
	for (let i=0,j = keys.length;i<j;i++){
		var key = keys[i];
		var twKey = keys[i].replace(/\s+/g,"_")
		var value = "";
		if (key == "Tags"){
			tags.push(convertStringToArray(moreInfo[key]));
			continue; // we don't want to make a key/value pair for tags just yet
		}
		else if (key == "Accessibility"){
			value = convertStringToArray(moreInfo[key]);
			tags.push(convertStringToArray(moreInfo[key]));
		}
		else if (key == "Inputs"){
			value = convertStringToArray(moreInfo[key],true);
			tags.push(convertStringToArray(moreInfo[key]));
		}
		else if (key == "Authors"){
			value = convertStringToArray(moreInfo[key],true);
			tags.push(convertStringToArray(moreInfo[key]));
		}
		else if (key == "Accessibility"){
			value = convertStringToArray(moreInfo[key],true);
			tags.push(convertStringToArray(moreInfo[key]));
		}
		else if (key == "Platforms"){
			value = convertStringToArray(moreInfo[key],true);
			tags.push(convertStringToArray(moreInfo[key]));
		}
		else if (key == "Published"){
			value = moreInfo[key];
			tiddler.created = convertDateToTW(moreInfo[key]);
			tiddler.modified = convertDateToTW(moreInfo[key]);
		}
		else if (key == "Category"){
			value = moreInfo[key];
			tags.push(value);
		}
		else if (key == "Status"){
			value = moreInfo[key];
			tags.push(value);
		}
		else if (key == "Author"){
			value = moreInfo[key];
			tags.push(value);
		}
		else if (key == "Genre"){
			value = moreInfo[key];
			tags.push(value);
		}
		else if (key == "Average session"){
			value = moreInfo[key];
			tags.push(value);
		}
		else{
			value = moreInfo[key];
		}
		tiddler[twKey] = value;
	}
	tiddler.tags = tags;
	return tiddler;
}

function addImages(text,urls){
	text = text + `\n\n`;
	for (let i=0,j = urls.length;i<j;i++){
		var url = urls[i];
			text = text + `[img width=500 [${url}]]`;
		}
	return text;
}


function pad(n, width, z) { // https://stackoverflow.com/a/10073788
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}




function convertDateToTW(date){
	//console.log(date);
//	var regex = /(\d+):(\d+), (\d+) (\w+) (\d+)/
	console.log(date);
	var regex = /(\d\d) (\w+) (\d\d\d\d) @ (\d\d):(\d\d)/
	var regexedDate = date.match(regex);
	var hour = regexedDate[4].toString();
	var minute = regexedDate[5].toString();
	var date = pad(regexedDate[1],2).toString();
	var month = months[regexedDate[2]].toString();
	var year = regexedDate[3].toString();
	var twDate = year + month + date + hour + minute + "000";
	console.log(twDate);
	return twDate;
}


function capitaliseFirstLetter(string){
	return string.charAt(0).toUpperCase() + string.slice(1);
}

function convertArrayToTWArray(arr){
	var finalTags = "";
	for (let i=0,j = Array.length;i<j;i++){
		var item = arr[i].trim();
		finalTags = finalTags + ` [[${item}]]`;
	}
	return finalTags;
}

function convertStringToArray(string,twArray=false){
	var finalArray = []
	if (!string.includes(",")){finalArray.push(string)}
		else{
			finalArray = string.split(",");
		}
	if (twArray){
		return convertArrayToTWArray(finalArray);
	}
	else{
		return finalArray;
	}
}



function convertTiddlerObjectToArray(tiddlers){
	var finalArray = []
	for (tiddler in tiddlers){
		finalArray.push(tiddlers[tiddler]);
	}
	return finalArray;
}

function saveJsonToFile(json){
	//let data = JSON.stringify(student);
	fs.writeFileSync('tiddlers.json', json);
}

<p><em>You and your partner stand against a terrible Crisis. </em><em></em><br></p>
<p><em>It shouldn’t have been anything new; the two of you had surpassed many hardships before, and forged a bond stronger than steel together. Together, you were supposed to be powerful.</em><em></em><br></p>
<p><em>But this time, things went horribly wrong. Even with your strengths combined, your last battle was certain to end in your defeat.</em><em></em><br></p>
<p><em>And so, your partner made the ultimate sacrifice: they sent you back to safety, while they stayed to fight the Crisis alone.</em></p>
<p><em></em><br></p>
<hr>
<p>
<br><br><strong>Two Stand To Fall</strong> is a solo storytelling game about people who would sacrifice for each other, in the face of a world that seeks their destruction. <br></p>
<p>Perhaps they live, in spite of the world. Perhaps they die, and are forever separated.</p>
<p>But there is a chance you both will come out alive. Therefore, you must try. <br></p>
<p><br></p>
<p>Play involves moving across a map and answering prompts as you travel. Your answers will slowly flesh out the world around your character: who they are, who their partner is, why this bond is so important — and inevitably, why they would throw away their hard-won safety to challenge the Crisis once more.<br></p>
<p>In order to play, you need: <br></p>
<ul><li>Playing cards </li><li>One or two six-sided dice </li><li>A token, such as a coin or a chess piece </li><li>A journal, to record your past and your actions as you play </li></ul>
<p><br></p>
<p>This game was created by <strong>Amorphous </strong>(<a href="https://amorphic.space/" target="_blank" rel="nofollow noopener">website</a>, <a href="https://twitter.com/_morphous" target="_blank" rel="nofollow noopener">twitter</a>) and <strong>Empwnleon </strong>(<a href="https://twitter.com/empwnleon" target="_blank" rel="nofollow noopener">twitter</a>). It was originally made for <a href="https://itch.io/jam/carta-jam" target="_blank">Carta Jam</a>, and is based on the <a href="https://peachgardengames.itch.io/carta-srd" target="_blank">Carta SRD</a> by Cat McDonald and&nbsp;<a href="https://peachgardengames.itch.io/" target="_blank">Peach Garden Games</a>.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODMzMTc5LmpwZw==/original/G989dm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcxLnBuZw==/original/wVt6tK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcyLnBuZw==/original/AIY7I0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcwLnBuZw==/original/Fin6fd.png]]
<p>Tyrants is a 1v1 battle card game played with a standard deck of playing cards.<br><br>Players take turns playing cards from their hands to the field to eliminate their opponents royal cards. The first player to eliminate all of their opponents royal cards wins!</p>
<p>The rules sheet can be found here for both full page print out and mobile friendly versions<br></p>
<p>Tyrants can also be played in Tabletop Simulator!&nbsp;<a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2409015321" rel="nofollow noopener">https://steamcommunity.com/sharedfiles/filedetails/?id=2409015321</a></p>
<p>Also a custom card deck styled for Tyrants&nbsp;can be found here:&nbsp;<a href="https://www.makeplayingcards.com/sell/phillipcorrado" rel="nofollow noopener">https://www.makeplayingcards.com/sell/phillipcorrado</a><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTgwNTI3LzU1NzI1NDMucG5n/original/mhfZQf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwNTI3LzU1NzI1NDUucG5n/original/xUwIof.png]]
<p>Follow the journey of Camille, a frog who dreams of becoming a ballet dancer! Help Camille to overcome everyday struggles, like breakfast, dancing or making friends.</p><p><br>"Un Pas Fragile" is a short interactive experience. This narrative game is designed for all ages (no text) and features slices of life chaining in an unexpected way.<br><br>• Play time – approx. 10 minutes<br>• Independent Games Festival 2017 – Best Student Game + Honorable Mention for Visual Arts</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SRZW0papzo8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDcuanBn/original/Gh2mzK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDYuanBn/original/sErBdY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDkucG5n/original/dFFPy6.png]]
<h1>A young girl learns a song.&nbsp;</h1>
<p>UNBEATABLE [white label] is an episodic side-story demo set in the world of&nbsp;UNBEATABLE.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/AxjBkJLVNk4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTIuanBn/original/1zQgBn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTguanBn/original/zxpZ8U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTMuanBn/original/lmskqI.jpg]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-xS2XRP6ups" allowfullscreen="" frameborder="0"></iframe></div>
<p><br></p>
<iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/BoetX9BOUDc" allowfullscreen="" frameborder="0"><br></iframe>
<h1>Description:</h1>
<p>Underhero is a 2D side-scroller RPG adventure game with turn-based combat… without the turns! Precisely timed actions are your most powerful weapons. It tells an intriguing and mysterious story, full of silly characters brimming with personality, quirky dialogue, and lots of weird humor.<br></p>
<p>Inspired by Paper Mario and other Nintendo RPGs. It tells the story of a world where the chosen hero has failed and an underling of the main villain takes his place as the new “hero”. Join Elizabeth IV and the little Masked Kid as they journey across the Chestnut Kingdom to defeat your evil boss, Mr. Stitches! Meet friends, foes and other weird characters in the mysterious world of Underhero.</p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p><strong>
<h1>Features:</h1>
<ul><li>    Turn-based combat with a twist: <strong>there are no turns!</strong> Use your reflexes to <strong>evade,</strong> and your timing to <strong>attack</strong> or <strong>parry!</strong> We call it <em>timing-based combat.</em>
</li><li>    A sidescrolling RPG adventure full of beautiful pixel art and cartoony aesthetics.
</li><li>    A wonderful original soundtrack composed by <strong>Stijn van Wakeren.</strong>
</li><li>    Enemies consider you their ally, so talk to them in-battles for tips, jokes, and lore!
</li><li>    Hit enemies with the beat of the music for <em>Groovy~</em> critical hits!  </li><li>    Explore worlds sprinkled with many hidden secrets.
</li><li>    Fun and intense boss battles!
</li><li>    <em>A story shrouded in mystery, with many twists and turns…</em></li></ul>
<ul><img src="https://img.itch.zone/aW1nLzE0NjY5MjQucG5n/original/yuA0Jd.png" loading="lazy"><br></ul>
</strong><p><strong></strong><br></p><p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong><em>**Seizure Warning** </em><strong><br></strong></strong><em></em><em>Certain moments in the game contain flashing lights and/or imagery that may cause discomfort or seizures for those with photosensitive epilepsy.</em><em></em><strong><br></strong></p>
<p>////</p>
<table><tbody></tbody></table>
<h4><strong>Important links below!</strong></h4>
<h4></h4>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p><strong>
<p>&nbsp;<a href="http://underherogame.com/" target="_blank" rel="nofollow noopener">Website</a> - <a href="http://underherogame.com/presskit" target="_blank" rel="nofollow noopener">Presskit</a> - <a href="http://store.steampowered.com/app/573320/Underhero/" target="_blank" rel="nofollow noopener">Steam </a>- <a href="https://gamejolt.com/games/underhero/266877" target="_blank" rel="nofollow noopener">Gamejolt</a> - <a href="https://twitter.com/Underherodevs" target="_blank" rel="nofollow noopener">Twitter</a> - <a href="https://discord.gg/ukNrGV5" target="_blank" rel="nofollow noopener">Discord</a> - <a href="https://underherodevs.tumblr.com/" target="_blank" rel="nofollow noopener">Dev Blog<br></a></p>
<h3><strong><a href="https://papercastlegames.itch.io/underhero-art-book" target="_blank">You can get the Underhero Art Book for free right here!</a><br><br>Demo available!</strong><em></em><strong><br></strong></h3>
<ul><li>Only Xbox 360 and Xbox One controllers supported. <strong>(Full game supports key binding and controller remapping options for all controller brands.)</strong></li><li>Windows only.</li><li>Have fun!<strong><em></em></strong></li></ul>
</strong><p><strong></strong><br></p><p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/-xS2XRP6ups" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzUxLnBuZw==/original/okCGwM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzYyLnBuZw==/original/FfbK8u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzU4LnBuZw==/original/MA4pGr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzUzLnBuZw==/original/K5Le8h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzU1LnBuZw==/original/zKRYG%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzYwLnBuZw==/original/9Cnp4F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0MS5wbmc=/original/JcZB37.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0Mi5wbmc=/original/RI1hK7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0NC5wbmc=/original/U%2BFYYd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0OS5wbmc=/original/OgSYK3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM1MS5wbmc=/original/vGhgRP.png]]
<p>Eleven arcane timepieces for your modern d20 tabletop games. From the Tick-Tock Timepiece to the Game Watch of Two-Dimensioning, the Global Repositioning Watch to the Mysterious Watch of the End Times, discover strange new items to grant new character abilities or drive a magical story. Out of print and offline since 2006, this weird little book is back.</p><hr><p style="text-align: center"><strong>Sample: </strong><strong>Watch of Useful Warnings</strong></p><p><em>Now this is a watch that warrants a demonstration. Here, let me put it on and stand with my back to you. Now, pick up that piece of wood and swing it at my head. It's quite all right, just swing it at me. Really try to hit me. Come on, it's very simple... there we are. Hear how the watch beeped just before you swung? That is how I knew when to duck. This watch will warn you any time an attack is directed at you. The price might look high now, but believe me, when it has saved your life for the thousandth time, you will find </em><em>it to be money well spent.</em></p><p>This trendy sports watch is sleekly designed, with digital date and time display. It also has an alarm function. It features an adjustable Velcro strap and a camouflage colour scheme of black, greens, and browns. </p><p><span></span>The watch's unusual power will not become apparent until the wearer is about to be surprised by something threatening. Any time the wearer would be considered flat-footed or surprised by an attack, trap, or otherharmful instance, the watch's alarm beeps just prior to it's occurrence. If the wearer can figure out the precise nature of the watch's effect, he will never be considered surprised or flat-footed against an attack or trap. The wearer will, thus, retain his Dexterity bonus to Defense in most situations where he would lose it.</p><p style="margin-left: 20px"><strong>Type:</strong> Wondrous Item (psionic)</p><p style="margin-left: 20px"><strong>Manifester Level:</strong> 10th</p><p style="margin-left: 20px"><strong>Purchase DC:</strong> 38</p><p style="margin-left: 20px"><strong>Weight:</strong> 0.5 lb.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3OTkvMjQ0OTM0LnBuZw==/original/ay8jA8.png]]
<p><strong>Uno, a newborn lifeform composed of dense steel, buzzy circuits and disjointed, static memories, wakes up, looking through a frosted cerulean ceiling. On its inside drive, weird images, and a text file with instructions. &nbsp;</strong><strong><br></strong></p>
<p><br></p>
<p><strong>The Subject's test has begun. Meet me at the top of the Obelisk.</strong></p>
<p><br></p>
<p><em>"Where am i?"</em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<em> "How did i came into existence?"</em> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<em> "For what purpose?"</em> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <em>"By the hands of whom?" </em><br></p>
<p><strong><br></strong></p>
<p><strong>Isolated in a hidden point of our universe, the Obelisk is&nbsp; a true wonder land, far from the 01's chains of morality and ethics. A place of true scientific progress and rebellion against the deterministic laws of nature's causality.</strong></p>
<p><strong>There's no other way. All the answers, reasons and a way out, lies at the top. <br></strong></p>
<p><img src="https://img.itch.zone/aW1nLzMzNTAxMTYucG5n/original/owfNgS.png" loading="lazy"></p>
<p>Unobelisk is a solo turn based, exploration game focused on resource management and puzzle solving. <br></p>
<p>With level design inspired by classic Resident Evil games and Metroidvanias, puts the player in the logic circuits of Uno, exploring an obelisk-shaped space station for a path to the top of the structure, where a way out is promised.<br></p>
<p>The not exactly linear progression of the game is blocked by a number of riddles, passwords, keys and the mysterious threat of the primordial ghosts, along with your own Subject brothers and even the 4 scientists themselves.</p>
<p>On the other hand, optional puzzle solving and exploration  are rewarded with upgrade modules, that grants better ammo capacity, maximum health boost, greater evasive perfomance or stronger offensive capabilities.</p>
<p><img src="https://img.itch.zone/aW1nLzMzNTAzNzgucG5n/original/o72X9z.png" loading="lazy"><br><em><strong><em><strong><br></strong></em></strong></em>Under normal conditions, the game can be finished&nbsp;between 10 and 20 hours, though finishing in less time is possible by skipping text content or simply knowing your way through the Obelisk.&nbsp;</p>
<p>A Puzzle helper function is available on the options menu for those stuck in Unobelisk. It doesn't skip any puzzle, but hints to solve them gets more obvious in some text files or even on the map.</p>
<p>There's also a challenge difficulty mode if the default one feels too easy. A ranking system exists exclusively for this mode, rating the player's performance based on the final game playtime, number of times healed in restoration devices or the collection of optional modules. <br></p>
<p>Controllers are natively supported. The ones using the DirectInput standard will have problems with button placement but there's a menu option fixing this. <br></p>
<p>While there's only one active dev behind Unobelisk,&nbsp; it uses assets, music, raw graphic materials and others from a number of people that makes their great work available with free licenses. Credits can be seen in the game's options menu.<br><br>Feel free to send feedback, relate bugs, or ask anything in the comments.<br><br><img src="https://img.itch.zone/aW1nLzMzNTAzMDUucG5n/original/cB0xto.png" loading="lazy"><br></p>
<p>This part of the game's description is focused on brazilian players.<br></p>
<p>A página do jogo no Itch.io está em inglês devido ao padrão do site, mas Unobelisk pode ser 100% jogado em português do Brasil, além da língua inglesa.<br><br>Por ser padrão da loja, a versão completa do jogo vai ser vendida em dólar, e não contará com preços regionais. Todos sabemos que o valor atual do dólar é completamente absurdo, por isso <strong>decidi adicionar uma forma de cobrar o jogo mais barato exclusivamente para brasileiros</strong>, por fora do itch.io. Para isso, basta ter uma conta de Picpay e um número de whatsapp.</p>
<p>Como funciona: O preço regional de Unobelisk exclusivo para brasileiros será de <strong>15 R$</strong>. Para comprar dessa forma, basta entrar em contato com o número de whatsapp do desenvolvedor, informar qual a sua conta do picpay, e enviar o dinheiro proposto para a compra do jogo. O desenvolvedor retornará com uma url de ativação do jogo no itch.io, pelo whatsapp.</p>
<p>O que o comprador precisa: <br></p>
<p>1 - Fazer ou possuir uma conta no whatsapp, uma conta no picpay, e uma conta no itch.io.</p>
<p>2 - Entrar em contato com o desenvolvedor (Número do whatsapp logo abaixo) pelo whatsapp, demonstrando interesse em comprar o jogo via picpay, e sanando qualquer dúvida diretamente. É importante entrar em contato antes de mandar dinheiro via picpay, para que tudo fique esclarecido. Eu respondo no whats pelo nick "Dogui".</p>
<p>3 - Com tudo certo no item 2, deposite o valor mínimo de 15 reais na conta de picpay divulgada logo abaixo. É possível depositar mais de 15 reais se quiser ajudar, não irei reclamar, mas é preciso deixar claro que deseja múltiplas chaves caso o deposito seja de 30 reais ou mais.</p>
<p>4 - Espere o desenvolvedor mandar um link com a ativação do jogo, via whatsapp. Se esperou entrar em contato direto comigo, provavelmente não levará mais de 5 minutos para que eu responda com a chave de ativação. Com a conta do itch.io logada no mesmo dispositivo, clique no link passado e ative o jogo pelo próprio itch.io.</p>
<p><strong>Minha conta de Picpay para depositar: <a href="https://app.picpay.com/user/gwdogui" rel="nofollow noopener">https://app.picpay.com/user/gwdogui</a></strong></p>
<p><strong>Meu número de whatsapp: +55 48 99108 9766<br></strong></p>
<p><strong>Se preferir, pode me adcionar no facebook e fazer o pedido pelo chat do face: <a href="https://www.facebook.com/dogui.amorim.1" rel="nofollow noopener">https://www.facebook.com/dogui.amorim.1</a></strong></p>
<p>Lembrando, essa forma de pagamento é temporária e existe devido a falta de preço regional no Itch.io. Estou planejando lançar o jogo na Steam eventualmente, e deixarei de oferecer esse método de pagamento quando isso acontecer.</p>
<p>Sim, pretendo dar chaves de ativação da Steam para quem comprou o jogo via Picpay. No entanto, para controlar melhor quem terá o direito de recebê-las, vou pedir alguns dados como nome completo na conversa de whatsapp. É importante que me procure (também via whatsapp) para pedir uma chave da Steam em um eventual lançamento na plataforma, pois não posso garantir que vou mandar as chaves sem a consulta direta de cada dono da versão do Itch.io.</p>
<p>Vale lembrar: Ninguém no Brasil precisa comprar pelo preço regional no Picpay. Qualquer brasileiro pode adquirir o jogo da forma comum pelos 12 dólares diretamente no Itch.io, especialmente numa condição financeira boa. O preço regional só existe para deixar o jogo mais barato para brasileiros num momento de crise e dólar altíssimo.<br></p>
<p>Qualquer dúvida, pode postar nos comentários. Não se intimide com comentários em inglês de outras pessoas, pode postar em português sem problemas que vou responder na medida do possível. <br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/ZcZCdi5hgdA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTIuZ2lm/original/x3KQV0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTMuZ2lm/original/cNfVbY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTUuZ2lm/original/ysem1a.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTYuZ2lm/original/EYd3XH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTcuZ2lm/original/4%2FJLi5.gif]]
<p class="text-justify">Untitled Darkness is a short game that deals with depression.</p>
<p class="text-justify">Depression can leave you powerless, feeling there is no way to escape it.&nbsp; While it has you trapped, it only allows you to see its darkness, hiding any light from you.</p>
<p class="text-justify">In the game, you experience someone’s struggle with depression.&nbsp; You witness how it distorts how&nbsp;they feel about themselves as they struggle to escape it.</p>
<p>There are also&nbsp;2 different possible endings for you to discover.</p>
<p class="text-justify">A few years ago I released a similar themed game about depression.&nbsp; While it was my 1<sup>st</sup> game and wasn’t perfect, I was proud of what I had accomplished.&nbsp; Over the years I have gotten better with art, animation, and general game design.&nbsp; Looking back at it, I felt a need to revisit that game with more mature eyes.&nbsp;</p>
<p class="text-justify">This is a retelling of that game.</p>
<p><br></p>
<p>Controls:<br></p>
<p>Move left or right&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;a and d or &lt;- and -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>interact&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;space</p>
<p>menu&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; escape</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/e2cQZp6zXwY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTEucG5n/original/E%2BGeWL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTMucG5n/original/bSlPjr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTQucG5n/original/2QK4ww.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTUucG5n/original/P3KA9K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTYucG5n/original/jknOVE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTkucG5n/original/HCUTht.png]]
<p><strong>Untitled Ghost Game</strong>&nbsp;is a collaborative storytelling single session game for two to six players and it requires no game master.&nbsp;&nbsp;In it you all play one poltergeist haunting a village that you come up with, explore and wreak havoc on.<br></p>
<ul><li>Bring life to a village as you create buildings and villagers to haunt,</li><li>soothe or intensify a building's energy and create new poltergeists,</li><li>help villagers solve or create their unfinished business and create new ghosts</li></ul>
<p>This game was influenced by games such as&nbsp;<em>Be Fae Do Crimes</em>&nbsp;by Adela Grace,&nbsp;<em>i’m sorry did you say street magic</em>&nbsp;by Caro Asercion, and&nbsp;<em>Fiasco</em>&nbsp;by Jason Morningstar.</p>
<p><strong>Versão em português disponível&nbsp;de graça!</strong><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDMucG5n/original/BWdYrN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDQucG5n/original/x3AAj6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDYucG5n/original/kFbqym.png]]
<p>Gamma, Delta, and Epsilon have seen more than enough to last a life time. They've been given hardly any information on what they are supposed to investigate and are also bringing some fresh recruits along. This situation is all thanks to those in charge trying to solve two problems at once:&nbsp;learn why one of their outposts has ceased communications and also casually try to get rid of a project that has stuck around long after its expected life cycle has ended.&nbsp;</p>
<p><br></p>
<p><strong>Note:&nbsp;</strong>There are side passages that alter text in the main parts of the story<br></p>
<p><br></p>
<p><strong>Content Warning:&nbsp;</strong>Drug use</p>
<p><br></p>
<p>Cover Shard by <a href="https://twitter.com/isaackarth" rel="nofollow noopener">@isaackarth</a><br>Thank you to <a href="https://twitter.com/Tambalaya" rel="nofollow noopener">@Tambalaya</a> for the proof reading</p>

[img width=500 [https://img.itch.zone/aW1nLzQzMTgzNjQucG5n/original/Jr6RNe.png]]
<p>Usurping Death
is a two player tabletop storytelling game. One player will be playing the blind god death, and the other is a former mortal looking to usurp the laws of this place and achieve a goal.</p><p>The game plays out half like a board game and half like a ttrpg. The player of Death will be manipulating the board and representing their control over their universe, while the Mortal player will be setting scenes to explore the universe and the journey they are on.&nbsp;</p><p>The game builds up to the Final Confrontation once the mortal's goal is clear and believes they can find and squash Death's power. <br></p><p><br></p><p>Usurping Death is a Stellar Remnant, meaning it takes place in the Universe found in the game <a href="https://worldchampgameco.itch.io/necronautilus" target="_blank">Necronautilus</a> by Adam Vass / World Champ Game Co.&nbsp; Go buy it.</p>
<p class="custom_legaltext">Usurping Death is an independent production by Adam Bell and is not affiliated with Adam Vass or World Champ Game Co.

</p>
<p class="custom_legaltext">Original illustrations by Adam Vass / World Champ Game Co. <a href="http://www.worldchamp.io" target="_blank" rel="nofollow noopener">www.worldchamp.io.</a></p>
<p class="custom_legaltext">Cover, layout, and writing by Adam Bell

</p>
<p class="custom_legaltext">This game is a hack of <a href="https://adamebell.itch.io/uneasy-lies-the-head" target="_blank">Uneasy Lies the Head</a> by Adam Bell.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTIuanBn/original/VE3X5U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTQuanBn/original/LGBqPk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTUuanBn/original/WKPPfD.jpg]]
<p><strong>Protect the last cities on earth!</strong><br></p>
<p>Every city matters as you attempt to survive for as long as possible. Made with hand drawn pixel graphics and re-imagined for modern monitors, this retro inspired arcade shooter lets you pilot two ships at once. Use the power ups built by the cities to chase your high score.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/zEXR-jW9YeA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzMucG5n/original/Sd%2BSKK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzQucG5n/original/BS4UnQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzYucG5n/original/gEsv7l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzcucG5n/original/Cq0pa1.png]]
<p>Valiant Quest is a combat-oriented roleplaying game of high adventure and peril. The players take on the role of one or more adventurers and embark upon dangerous quests to obtain gold and build their legends.<br></p>
<p>Valiant Quest has a deep, strategic combat system filled with tension and drama. The game is deeply concerned with spacing and best played with miniatures and a grid.</p>
<p>A challenging mixture of roleplaying game and wargame, even basic encounters in Valiant Quest will often put you in positions where the best move is unclear. As you progress, not only will your characters improve (provided they live), but your own skills will grow too.</p>
<p>You are not owed a story in Valiant Quest, and the Game Mistress is as much an adversary as she is an impartial referee. If you wish to be a hero you will need to be clever, lucky, and when the time calls for it… valiant!</p>
<ul><li>16 unique classes! Over 50 talents to customize your hero! over 100 spells to cast! 60 fearsome monsters to battle!&nbsp;</li><li>Fight deep tactical battles filled with character, cunning, peril, and heart. Combat is made up of several layers of push-your-luck mechanics. There are always ways you can court disaster for an advantage!</li><li>Character progression that keeps you in the moment.&nbsp;&nbsp;Enjoy all the depth of games with dozens of abilities and features without needing to plan builds months in advance!<br>
</li><li>Campaign procedures create a world you can explore freely with no preparation. Take care not to neglect the forces of evil, as villainous factions enact their will upon the map with each passing week!</li><li>25+ pages of optional rules and tips for how to expand Valiant Quest to your heart's content! Including rules for weapons becoming legendary through use, familiars who will assist you in battle, customizing monsters, changing the item list to reflect a different setting, and critical injuries and prosthesis.</li></ul>
<p>Read more about it here&nbsp;<a href="https://rosepulp.wordpress.com/valiant-quest/" rel="nofollow noopener">https://rosepulp.wordpress.com/valiant-quest/</a>and join the community at&nbsp;<a href="https://discord.gg/x9eqMcHGpb" rel="nofollow noopener">https://discord.gg/x9eqMcHGpb</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0ODM4ODUucG5n/original/Wfj8qH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTkxOTAucG5n/original/AUHtWL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzAucG5n/original/HcTESi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzEucG5n/original/n0ogLq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MjcucG5n/original/xksxLN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzIucG5n/original/aNaMMH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MjkucG5n/original/gT8xaW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzMucG5n/original/LCvh3F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTkwNzAucG5n/original/8vfv%2F5.png]]
<p>Welcome to the VaporLight Void, a place many Racers find themselves in sooner or later. You don't know how you ended up here and you don't know what to do with yourself. That's fine. You won't find guidance here, but maybe you can find it in yourself. <br></p>
<p><br>No goals. No pre-defined activities. Just your bike, your thoughts, the void and music. <br>So relax, listen to some chill beats and enjoy the act of ephemeral creation.<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDc2LzU1MjgwNjMucG5n/original/Trdmgn.png]]

<p><strong>WARNING! THIS IS EARLY ACCESS MODE!</strong><br></p>
<p>The game is mostly feature complete, however:</p>
<ul><li>The tracks are not finalised<ul><li>final tracks may be very different and will have a lot more details and decorations to make them more interesting.</li></ul></li><li>The track editor is not finalised.</li><li>The ships and team designs are not finalised.</li><li>The soundtrack is not finalised.</li><li>There is currently no localisation.</li></ul>
<p><strong>But, the game is still very fun to play and I want to share it with people.<br></strong></p>
<p>Press F9 to save a GIF of the last few seconds. Please share you gifs #vektor2089 !</p>
<p>Please post any issues on the discussion board below.<br></p>
<p>Features:<br></p>
<ul><li>12 super fun impossible looping tracks in different locations.</li><li>4 different speed classes</li><li>5 different ships to choose from with different handling and performance characteristics</li><li>Amazing soundtrack by <a href="http://dubmood.bandcamp.com" target="_blank" rel="nofollow noopener">Dubmood</a></li><li>6 different racing teams</li><li>Amazing 60 FPS!</li><li>The latest in adaptive AI for races with up to 12 ships!<ul><li>Adjustable AI difficulty</li></ul></li><li>Time trial mode, race against yourself to improve your time!<ul><li>Watch replays, fast forward, rewind, slow motion.</li><li>Graph of speed over time</li></ul></li><li>4 player split screen local multiplayer!</li><li>Game controller support</li><li>Hotseat multiplayer time trials (a la trackmania)</li><li>In-built track editor</li><li>In-build ship designer</li><li>A whopping 16 colours!</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6r-PtKRIvgo" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0NzI3LmdpZg==/original/5uC%2Fj8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0MDk0LmdpZg==/original/PD6Fbr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0NzMyLmdpZg==/original/RhuWKV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA0LnBuZw==/original/Rhv70q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA1LnBuZw==/original/T8IAHu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA3LnBuZw==/original/zVuBER.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA2LnBuZw==/original/9686JF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA4LnBuZw==/original/j7NJ9c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjIwMDk3LnBuZw==/original/U5nHx0.png]]
<p><em>Victor's GM-less Oracle</em> is a simple oracle for GM-less solo and cooperative games. It uses a dynamic probability curve to set the tone, urgency, and tension of a situation. From a single roll, players can improvise a scene that addresses the questions that matter most: Are things going our way? Are there setbacks? Is there a crisis? Do we get out of it okay? Does my character get what they want? How could things possibly go wrong?<br></p>
<p><em>Victor's GM-less Oracle</em> is versatile enough to be adapted to any system or setting, and doubles as an effective enemy and NPC A.I. tool.</p>
<p><em>Victor's GM-less Oracle</em> is licensed under a Creative Commons Attribution 3.0 Unported (CC BY 3.0). You are free to share, adapt, and add <em>Victor's GM-less Oracle</em> to your own published commercial or free games and adventures, just by giving appropriate credit to Victor A. Gonzalez and Curse Night, providing a link to the license (this webpage), and indicating if changes were made.&nbsp;</p>
<p><strong>Olivia Hill Rule</strong>: You may not use, share, or adapt this material if you are a fascist, racist, sexist, homophobe, transphobe, or other bigot or reactionary.&nbsp;</p>
<p>&nbsp;<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMzAuanBn/original/PitccN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMjkuanBn/original/i2d9Af.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMzEuanBn/original/fyczuL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzOTEuanBn/original/LZZDv0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzOTIuanBn/original/Aq7qlu.jpg]]
<h2>Nothing to see here except a perfectly ordinary video store.</h2>
<p><br></p>
<p>Video Hole is an ongoing, episodic adventure game series revolving around a series of strange completely normal events that transpire in your local, intergalactic video store. In episode one, it’s business as usual as you navigate your soul-crushing job while solving mysteries and meeting new characters. Of course, things are never quite what they seem in the darkly mysterious world of cross-temporal, hard-format film rental.<br></p>
<h2>Game Features</h2>
<ul><li>Explore a bright and colorful world around the only video store this side of the cosmos.</li></ul>
<ul><li>Interact with a unique cast of characters with over 1,000 lines of unique dialogue.</li></ul>
<ul><li>Uncover the mysteries of this mysterious business by completing tasks for mysterious strangers.</li></ul>
<ul><li>Experience both an overt and ambient story by collecting items based on dialogue choices.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/l4cptbN0zSE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzIucG5n/original/8%2FSqPA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzMucG5n/original/mTsrlS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzcucG5n/original/HHgbJ%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzUucG5n/original/qYrmcx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzgucG5n/original/8A1DA6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzkucG5n/original/cmKv0J.png]]
<p>Race cars in classic motorsport style. Each corner is a chance to outmaneuver the other drivers, every straight a flat out drag race. Fast-paced strategy relies on your reflexes to pull off split second maneuvers. Feel your car's momentum, find the rhythm of the track, and drive like a racing driver.&nbsp;</p>
<p>Guide your car's driving line to take each corner quickly while finding a gap to overtake other drivers. On straights, be quick on your gears and late on the brakes to get to the corner first, always on the edge of spinning or crashing out. Spend an entire lap trying to close the distance to the car ahead, choosing the right corner to make your move. &nbsp;</p>
<p>Other drivers break your rhythm, forcing you to adapt your driving and how you tackle corners. Each track is unique and you have to learn the fastest route through corners and sections. Rain changes your car's behavior while you deal with decreased visibility. With a simple control scheme, victory will come from out-thinking and out-driving everyone else.&nbsp;</p>
<p>Inspired by the classic era of formula racing around the Mediterranean, each environment is a colorful and hand-built racetrack, all alongside an originally produced surf rock soundtrack.&nbsp;</p>
<p>Featuring</p>
<ul><li>Four player local and online multiplayer&nbsp;</li><li>Races award points to compete over a multi-race season</li><li>Single player practice to learn tracks and hone your driving</li><li>Twelve unique tracks and environments</li><li>Simple, three button controls are easy to learn&nbsp;</li><li>Different weather modes to add a twist to driving</li><li>Original surf rock soundtrack</li><li>Stylish Mediterranean locales</li></ul><iframe src="https://www.youtube.com/embed/v1ZlsxixlNY" frameborder="0" allowfullscreen=""></iframe><iframe src="https://www.youtube.com/embed/WyliYVHki0c" frameborder="0" allowfullscreen=""></iframe><p><em>Note: Online play requires Steamworks, but every purchase will come with a Steam key for no extra charge. Redeem the code on Steam and play online as you please.</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/v1ZlsxixlNY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkyLmdpZg==/original/esRl6R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkxLmdpZg==/original/UjnYBS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkwLmdpZg==/original/vumrI8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk3LnBuZw==/original/HedJDV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk2LnBuZw==/original/WewPYw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MjAwLnBuZw==/original/wcccpm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk4LnBuZw==/original/eOwVCb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk5LnBuZw==/original/RIg6Y6.png]]
<div class="custom-youtube-vid-wrapper">
    <div class="custom-youtube-vid">
    <iframe scrolling="no" src="https://www.youtube.com/embed/DP6JuC00lwE?autoplay=0&amp;fs=1&amp;iv_load_policy=3&amp;showinfo=0&amp;rel=0&amp;cc_load_policy=0&amp;start=0&amp;end=0&amp;color=white" width="534" height="300" frameborder="0"></iframe>
    </div>
    </div>
<div class="custom-vignettes-desc">
    <p>Vignettes is a unique exploration game without text or characters, where objects shapeshift as you spin them around to wander through a kaleidoscope of different moods and settings.</p>
    <p><br>It is an accessible, colorful experience for all to enjoy, filled with playful interactions and hidden secrets.
        <br>
    </p></div>
<div class="custom-screenshot-list">
    <a href="https://polclarissou.com/vignettes/itch/plantHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/plantPreview.png" loading="lazy"></a>
    <a href="https://polclarissou.com/vignettes/itch/statueHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/statuePreview.png" loading="lazy"></a>
    <a href="https://polclarissou.com/vignettes/itch/garboHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/garboPreview.png" loading="lazy"></a>
    <a href="https://polclarissou.com/vignettes/itch/ringHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/ringPreview.png" loading="lazy"></a>
    </div>
<div class="custom-vignettes-desc2">
    Here are some neat things you can do in Vignettes:<br><br>
    <ul><li>Rescue a stray cat</li><li>Re-enact the moon landing</li><li>Take a selfie on top of a mountain&nbsp;</li><li>Awaken an ancient snake spirit</li><li>Travel back in time</li><li>Conduct biological studies</li><li>And lots more!</li></ul>
    </div>
<div class="custom-os-wrapper">
    <img class="custom-os" src="https://i.imgur.com/m6mvhsP.png" loading="lazy">
</div>
<div class="custom-vignettes-desc3">
    website: <a href="http://vignettesga.me" target="_blank" rel="nofollow noopener">vignettesga.me</a><br>
    presskit: <a href="http://vignettesga.me/press" target="_blank" rel="nofollow noopener">vignettesga.me/press</a><br>
</div>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DP6JuC00lwE?autoplay=0&fs=1&iv_load_policy=3&showinfo=0&rel=0&cc_load_policy=0&start=0&end=0&color=white" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAyMTkucG5n/original/MmrIIp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTAucG5n/original/nQ%2B%2Bcm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTQucG5n/original/Xxx7Gt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTEucG5n/original/f4nJgk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDIucG5n/original/KDj%2FJk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDMucG5n/original/xCSAwk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDQucG5n/original/cENsiP.png]]
<p>Village Apothecary is&nbsp;a puzzle&nbsp;game&nbsp;about&nbsp;brewing&nbsp;potions.<br>You are an apothecary, and the villagers need their potions. Get a request, add the ingredients together, and brew the potion. The trick is adding the ingredients in the right order; make a mistake and you'll end up with the wrong result!</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDQucG5n/original/00FZ9m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDYucG5n/original/n9QcSd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDcucG5n/original/zjPxs8.png]]
<p>
	Here you are. <br>
This world moves fast, and so do you, but you don't have to. <br>
Have a break, take a breath, relax, and be here among this box full of stuff. <br>
Bask in the sun's rays as they pour through the gaping strips of space, <br>
or reclude into darkness behind a fortified wall of collated slats.
</p>
<p>
This is right now.<br>
This is your life.<br>
This is <strong>VIRTUA BLINDS</strong>
</p>
<p>
	<u><em>In cooperation with:</em></u>
<br>
	<em>Atmospheric Research &amp; Analysis Institute © <br>
	ECO VIRTUAL
	 ™ 
	</em>
</p>
<p><em>version: VanCAF 2017 - Comics &lt;3 Games</em></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/HVPxYe1XFGw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDQ2ODk2LnBuZw==/original/8aBVMa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjU1LnBuZw==/original/c1kTcX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjUzLnBuZw==/original/I7p5cr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjU0LnBuZw==/original/wGGK8U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjQ5LnBuZw==/original/fSwbqs.png]]
<h1>Void Runner</h1>
<h3>Teleport Through Obstacles In This&nbsp;Fast-Paced Infinite Runner</h3>
<p>In Void Runner, your objective is to survive for as long as you can by avoiding obstacles. In this infinite runner, you <strong>telepor</strong>t instead of jumping. This means you can teleport through obstacles, but be careful, teleport too soon and you might end up in a wall.</p>
<p>Void Runner was created in collaboration with my brother. We were inspired by other infinite runners but wanted to take a different approach to how you avoid obstacles. We hope you enjoy playing Void Runner as much as we enjoyed making it.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0CpKOwFNvTw" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMjgucG5n/original/Klzeyr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMzEucG5n/original/BEt1So.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMzIucG5n/original/xQ4IAl.png]]
<h3>Void Wisp is an ambient arcade runner where you earn points by coming close to obstacles without crashing. </h3>
<p>
	You are a wisp. A collection of random energy that has coalesced into a sentient form. You float through the great nothingness that permeates existences, skimming off aether from the whatever that is nearby.
</p>
<p>
	The gameplay is simple. You have two buttons; one moves you up and the other lets you glide. Typically you'll be holding the glide button to slow your descent when an obstacle comes near so you can grind along the top or bottom for points. The closer you are the more points you'll earn. You'll crash if the center of the Wisp contacts an obstacle.
</p>
<p>
	Below is a short overview of how this game works.
	<br>
</p>
<p>
	<iframe src="https://www.youtube.com/embed/dCqIOS8YJS4" allowfullscreen="" width="560" height="315" frameborder="0">
	</iframe>
</p>
<h2> Features:</h2>
<ul><li>Simple gameplay that’s easy to pick up and hard to master. Designed for both short spurts and long sessions.&nbsp;</li><li>4 Game Modes each with a unique twist.
<ul><li>In Classic Mode you’ll start to lose points the farther you go, so you want to get as many as quickly as possible.</li><li>In Caravan Mode you have one minute to score as much as possible. Crashing will lower the amount of time you have.</li><li>Survival Mode is the most complex mode. A timer is always ticking down but can be refilled by collecting luster and having a high multiplier. The game gets faster and you earn more points the further you make it.</li><li>In Traveler Mode there are 40 premade levels each with 5 goals to complete. You will face unique obstacles not found in the other modes.</li></ul></li><li>Accessibility options that let you customize the game’s looks, controls, and difficulty.
<ul><li>You can change the appearance of the game and character to better suit what makes you comfortable.</li><li>Supports mouse, keyboard, and gamepad. All with fully remappable controls!</li></ul></li><li>Dreamy ambient music that partially reacts to how you play.</li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/dCqIOS8YJS4" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5Njk1LnBuZw==/original/YpJceA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTExLnBuZw==/original/IB1X%2BC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTEwLnBuZw==/original/hg8qYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTA5LnBuZw==/original/B5KHG3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5NzA1LnBuZw==/original/rszEx7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5NzA2LnBuZw==/original/j6NwP%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTA4LnBuZw==/original/xHdAud.png]]
<p>Help! Everyone has been teleported away randomly! As the heroic Captain Viridian, it's up to you to find your friends, bring them back to safety, and save the universe! <br> <br> VVVVVV is a platform game all about exploring one simple mechanical idea - what if you reversed gravity instead of jumping? <br> <br> The game is designed not to artificially gate your progress. In VVVVVV there are no locks, no power-ups, no switches, nothing to stop you progressing except the challenges themselves.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/sf06P-_1lkU" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE3LnBuZw==/original/JnUNFV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE4LnBuZw==/original/a8Xn8s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE5LnBuZw==/original/4OW21R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTIwLnBuZw==/original/RodvxT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTIxLnBuZw==/original/j4Cm05.png]]

<p>This is an in-person game where participants will explore the future by walking through a neighborhood and using the sights as inspiration.<br></p>
<ul><li>Players: 1 to <span class="">∞</span></li><li>Duration: 60-90 minutes</li><li>Activities: walking and talking</li></ul>
<p>This game involves minimal prep, just planning a route and printing and cutting out two pages of prompts.</p>
<p><br></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1nLzI4MzQzMTcucG5n/original/LyTpCF.png]]
<p>Want a physical cartridge for Wampus? Reach out on Twitter:&nbsp;@johnvanderhoef</p>
<p>* * *</p>
<p>Wampus is an overhead arcade narrative adventure game developed for the Nintendo Entertainment System (NES).</p>
<p>The wampus live on&nbsp;a planet invaded by colonialists, who farm and mine the land for its natural resources. These resource-stripping activities threaten the local flora and fauna, especially the Mountain Wampus, who get hunted for their treasure.</p>
<p>As a young wampus, players set out to rid the planet of the settler invaders and restore harmony to the land. While a fun lark, Wampus explores themes of environmentalism, conservationism, stewardship of the land, and the destructive nature of colonialism.</p>
<p>* * *</p>
<p><strong>Wampus </strong>is the <strong>first</strong>&nbsp;game in the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1.&nbsp;Wampus</p>
<p>2.&nbsp;<a href="https://johnvanderhoef.itch.io/wart-worm-wingding" target="_blank">Wart Worm Wingding</a></p>
<p>3.&nbsp;<a href="https://johnvanderhoef.itch.io/bat-lizard-bonanza" target="_blank">Bat Lizard Bonanza</a></p>
<p>4. <a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a></p>
<p>***</p>
<p>Controls</p>
<p>Directional Pad -- move up, down, left, and right</p>
<p>B -- Wampus Claw&nbsp;attack (once unlocked)</p>
<p>A -- Wampus coin projectile (once unlocked)</p>
<p>Hold B and press A -- Wampus Burrow (once unlocked)</p>
<p>Hold A and press B -- Wampus Rock Bomb (once unlocked)</p>
<p>***</p>
<p>FOR BEST EXPERIENCE:&nbsp;I&nbsp;recommend getting an original NES&nbsp;controller and a USB adapter for it. You can find one <a href="https://www.retrousb.com/product_info.php?cPath=21&amp;products_id=158" rel="nofollow noopener">here</a> or <a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&amp;qid=1549047471&amp;sr=8-3&amp;keywords=NES+controller+usb+adapter" rel="nofollow noopener">here</a>.</p>
<p>For really enterprising types, this game is fully playable on an actual NES. You can use either an <a href="https://www.amazon.com/s?k=everdrive+n8&amp;hvadid=234353538216&amp;hvdev=c&amp;hvlocphy=9031087&amp;hvnetw=g&amp;hvpos=1t1&amp;hvqmt=e&amp;hvrand=9017374272736160785&amp;hvtargid=aud-647846986281%3Akwd-303890194056&amp;tag=googhydr-20&amp;ref=pd_sl_glpmwc1bx_e" target="_blank" rel="nofollow noopener">Everdrive</a>, a <a href="https://www.retrousb.com/product_info.php?products_id=34" target="_blank" rel="nofollow noopener">PowerPak</a>, or flash an empty cart, as long as each has mapper 30 support.</p>
<p>*&nbsp;*&nbsp;*</p>
<p>Wampus was made possible thanks to <a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener">NESMaker</a>, an engine developed to make NES development a reality for people who are not versed in assembly language.</p>
<p>In order to play Wampus, you'll need an NES emulator. I recommend <a href="http://www.fceux.com/web/home.html" rel="nofollow noopener">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games.&nbsp;</p>
<p>Once you have FCEUX downloaded, start it up and&nbsp;open the Wampus.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong>&nbsp;Download&nbsp;<a href="https://openemu.org/" target="_blank" rel="nofollow noopener">OpenEMU</a> for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core."&nbsp;Then select FCEU.&nbsp;</p>
<p>* * *</p>
<p>Music</p>
<p>Princess Quest by&nbsp;Ben Burnes (Abstraction)</p>
<p>Pixel War 1 by&nbsp;Ben Burnes (Abstraction)</p>
<p>Save the City by&nbsp;Ben Burnes (Abstraction)</p>
<p>Out of Time&nbsp;by&nbsp;Ben Burnes (Abstraction)</p>
<p>MULE Theme&nbsp;by Roy Glover, translated to NESMaker by&nbsp;Ben Burnes (Abstraction).</p>
<p>To learn more about Ben Burnes's music, visit:&nbsp;<a href="http://www.abstractionmusic.com/" rel="nofollow noopener">http://www.abstractionmusic.com/</a></p>
<p>* * *</p>
<p>Wampus is part of the MULEniverse.</p>
<p>* * *</p>
<p>More from this developer:&nbsp;<a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lLIrCjy59X0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4NzkucG5n/original/2NCc%2F9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODAucG5n/original/XLLxSq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODEucG5n/original/X9%2FTxd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODIucG5n/original/p22sKN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODMucG5n/original/%2BCU92%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzI3MTI0OTEuanBn/original/6nekDO.jpg]]

<h1>WELCOME TO THIS DIGITAL VINYL ALBUM:</h1>
<p>a sonic experience to 6 new additional natures for the iconic game Wanderhome (&nbsp;<a href="https://possumcreekgames.itch.io/wanderhome">https://possumcreekgames.itch.io/wanderhome</a>&nbsp;)</p>
<p>.</p>
<p></p>
<p><span class="">Each NATURE features </span><span class="">custom collage art by yours truly,&nbsp;</span><span class="">lyric-style flavor text,&nbsp;</span><span class="">classic prompt list for Wanderhome play, and a&nbsp;&nbsp;unique&nbsp;</span><span class="">CURATED PLAYLIST FLOW &amp; SOUND</span></p>
<p>.</p>
<p><span class="">Bring your wanderers to the&nbsp;</span></p>
<p><span class="">Beach&nbsp;</span></p>
<p><span class="">Rave&nbsp;</span></p>
<p><span class="">Long Tables&nbsp;</span></p>
<p><span class="">Dens&nbsp;</span></p>
<p><span class="">Dressmakers' &amp;&nbsp;</span></p>
<p><span class="">River Springs and&nbsp; explore a specific tropical sensation, relaxation, bliss and fun to your party and play~</span></p>
<p>.<br></p>
<p></p>
<p>Download Quick Ref for a setting only text version.&nbsp;</p><p>This is made with support of the Haeth Grant</p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzkzMi82MDI5MzUxLnBuZw==/original/4uwXJD.png]]
<p class="text-center"><em>You can hear it, can't you?</em></p>
<p class="text-center"><em>The siren call of what might be on the lacy border of the known world, where new and wondrous things – where new world --</em></p><p class="text-center"><em>rise from the primordial foam.</em></p>
<p class="text-center"><em>What will you find, on the Edge?</em></p>
<p class="text-center"><em>Who might you meet?<br></em></p>
<p><em><br></em></p>
<p>Once&nbsp;upon&nbsp;a&nbsp;time,&nbsp;I experimented&nbsp;with&nbsp;fitting&nbsp;a&nbsp;wee&nbsp;rpg&nbsp;system&nbsp;with wee implied&nbsp;setting&nbsp;into a&nbsp;pocketmod:&nbsp;the&nbsp;result&nbsp;of that&nbsp;experiment was&nbsp;<a href="https://taichara.itch.io/nine-black-jewel-moons" target="_blank">Nine Black Jewel Moons</a>.</p>
<p>Quite a few months and some expansions of rpg later, now there's Wandering Jewel Moons, a quarter-page-sized booklet of fantasy exploring along -- and beyond -- the Edge of the world.</p>
<p>Enjoy! :3<br></p>
<p><br></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1nLzU0MDg0MzkucG5n/original/1%2B%2FLPt.png]]

<p><em>Wart Worm Wingding</em>&nbsp;is a 2-player arcade adventure for the NES. It's inspired by games like&nbsp;<em>Bubble Bobble</em>&nbsp;and&nbsp;<em>Dig Dug</em>.</p>
<p>The settlers' mining operations have gone too far.&nbsp;Help the Wart Worms, Wing and Ding, destroy the settler invaders and free their underground lands from exploitation!</p>
<p><em>Wart Worm Wingding</em>&nbsp;features a rocking soundtrack,&nbsp;over 100 levels, and 10 boss fights.</p>
<p><em>* * *</em></p>
<p><strong>Wart Worm Wingding&nbsp;</strong>is the <strong>second&nbsp;</strong>game in&nbsp;the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1.&nbsp;<a href="https://johnvanderhoef.itch.io/wampus" target="_blank">Wampus</a></p>
<p>2.&nbsp;Wart Worm Wingding</p>
<p>3.&nbsp;<a href="https://johnvanderhoef.itch.io/bat-lizard-bonanza" target="_blank">Bat Lizard Bonanza</a></p>
<p>4.&nbsp;<a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a>.</p>
<p><strong><em>* * *</em></strong></p>
<p>FOR THE BEST EXPERIENCE:&nbsp;I&nbsp;recommend getting an original NES&nbsp;controller and a USB adapter for it. You can find one&nbsp;<a href="https://www.retrousb.com/product_info.php?cPath=21&amp;products_id=158" rel="nofollow noopener">here</a>&nbsp;or&nbsp;<a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&amp;qid=1549047471&amp;sr=8-3&amp;keywords=NES+controller+usb+adapter" rel="nofollow noopener">here</a>. You can also use any gamepad for a similar experience.</p>
<p>For really enterprising types, this game is fully playable on an actual NES. You can use either an&nbsp;<a href="https://www.amazon.com/s?k=everdrive+n8&amp;hvadid=234353538216&amp;hvdev=c&amp;hvlocphy=9031087&amp;hvnetw=g&amp;hvpos=1t1&amp;hvqmt=e&amp;hvrand=9017374272736160785&amp;hvtargid=aud-647846986281%3Akwd-303890194056&amp;tag=googhydr-20&amp;ref=pd_sl_glpmwc1bx_e" target="_blank" rel="nofollow noopener">Everdrive</a>, a&nbsp;<a href="https://www.retrousb.com/product_info.php?products_id=34" target="_blank" rel="nofollow noopener">PowerPak</a>, or flash an empty cart, as long as each has&nbsp;<strong>mapper 30</strong>&nbsp;support.</p>
<p>*&nbsp;*&nbsp;*</p>
<p>Wart Worm Wingding was made possible thanks to&nbsp;<a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener">NESMaker</a>, an engine developed to make NES development a reality for people who are not versed in assembly language.</p>
<p>In order to play Wart Worm Wingding, you'll need an NES emulator. I recommend&nbsp;<a href="http://www.fceux.com/web/home.html" rel="nofollow noopener">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games.&nbsp;</p>
<p>Once you have FCEUX downloaded, start it up and&nbsp;open the WartWormWingding.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong>&nbsp;Download&nbsp;<a href="https://openemu.org/" target="_blank" rel="nofollow noopener">OpenEMU</a>&nbsp;for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core."&nbsp;Then select FCEU.&nbsp;</p>
<p>* * *</p>
<p>Music</p>
<p>Rabbit Town by&nbsp;Ben Burnes (Abstraction)</p>
<p>Penguin Town by&nbsp;Ben Burnes (Abstraction)</p>
<p>Penguins vs. Rabbits by&nbsp;Ben Burnes (Abstraction)</p>
<p>Penultimate by&nbsp;Ben Burnes (Abstraction)</p>
<p>To learn more about Ben Burnes's music, visit:&nbsp;<a href="http://www.abstractionmusic.com/" rel="nofollow noopener">http://www.abstractionmusic.com/</a></p>
<p>***</p>
<p class="text-center"><strong><em><strong><img src="https://img.itch.zone/aW1nLzMwOTk1NDAucG5n/original/dxdhS8.png" style="max-width: 100%" loading="lazy"></strong></em></strong>
</p>
<p><strong><em>Wart Worm Wingding&nbsp;</em></strong>was successfully&nbsp;<strong>KICKSTARTED&nbsp;</strong>in March 2020.&nbsp;<strong><a href="https://www.kickstarter.com/projects/wartwormwingding/wart-worm-wingding-a-new-arcade-platformer-for-the-nes" rel="nofollow noopener">https://www.kickstarter.com/projects/wartwormwingding/wart-worm-wingding-a-new-a...</a></strong></p>
<p>Want a physical cart? Contact me via email.</p>
<p>* * *</p>
<p>Wart Worm Wingding&nbsp;is part of the MULEniverse.<span></span></p>
<p>* * *</p>
<p>More from this developer:&nbsp;<a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/89yNS0H7t5g" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjMucG5n/original/dAb7j6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTQucG5n/original/g191vk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTUucG5n/original/tj334M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTYucG5n/original/9wLMEY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTcucG5n/original/rUq5DS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTgucG5n/original/Dp%2F1FZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTkucG5n/original/RyksyB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjAucG5n/original/jUQ7WH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjEucG5n/original/PMK9yI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjIucG5n/original/0dQEJE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjYucG5n/original/06AiIM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjQucG5n/original/I7PrEU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjUucG5n/original/cEe%2B5X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjcucG5n/original/E6d8rp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzQzMjI5NzMuanBlZw==/original/dFRoEX.jpeg]]
<figure><img src="https://img.itch.zone/aW1nLzc3ODIyMC5wbmc=/original/ouJNa4.png" style="color: inherit" loading="lazy"><br></figure>
<p><strong>Watch Me Jump</strong> is a digital story of scandal and betrayal, played out in four quarters. As WNBA all-star Audra Bee Mills, the player will navigate through the story, shaping Audra's personality along the way through the choices made.</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMS5wbmc=/original/BUO6Um.png" loading="lazy"><br></p>
<p><strong>Watch Me Jump </strong>is the first video game from award-winning playwright Jeremy Gable, and is adapted from his play of the same name.&nbsp;The player takes the role of Audra Bee Mills, who is about to become the highest paid women’s basketball player in the world.&nbsp;But on the night before playoffs, a scandal threatens to overturn everything she has worked for. And Audra has to figure out how to get through the night without losing either her dignity or her career.</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMi5wbmc=/original/pizbym.png" loading="lazy"><br></p>
<p>As the player moves through the game, various choices will influence Audra’s experience and personality. And with the decisions made, the player will help Audra determine what it truly means to be “the best".</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMy5wbmc=/original/zmr4d2.png" loading="lazy"><br></p>
<p>Featuring completely original artwork and music, <strong>Watch Me Jump</strong> is a throwback to the games of the 8-bit era, combining the look and feel of&nbsp;old-school RPGs and text based adventures with a unique and original 21st century story. And simple, easy-to-use controls help move the player through the many twists of this intense and humorous journey.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/0d-6Kj-FIy8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTMucG5n/original/FYeH13.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTQucG5n/original/ykyONo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTUucG5n/original/rMoSIc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTYucG5n/original/9Vl17X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTcucG5n/original/a4FFIb.png]]
<p>YOUR ACTIONS HAVE BEEN EXAMINED AND IT HAS BEEN DETERMINED YOU HAVE VIOLATED OUR NATION'S LAWS AND HAVE CONTRIBUTED TO A WEAKNESS IN OUR NATION'S SECURITY.</p>
<p><br><br>TO BE OFFERED A SECOND CHANCE YOU MUST PROVE YOURSELF TO HAVE REALIGNED WITH THE PRIORITIES OF OUR SOCIETY...</p>
<p><br><br>YOU MUST TRACK DOWN AND ELIMINATE FOUR UNDESIRABLES, WHOSE EXISTENCE IS INCONGRUENT WITH THE PRIORITIZATION ABOVE ALL OF SELF AND NATION ON WHICH OUR SOCIETY THRIVES.</p>
<p>-----</p><p>Supports local co-op for up to 4 players!<br></p><p>If you like what you see feel free to <a href="http://www.fletchersgames.com/contact.html" target="_blank" rel="nofollow noopener">sign up for my mailing list</a> to get updates on my upcoming games!<a target="_blank" href="http://steamcommunity.com/sharedfiles/filedetails/?id=718469100​" rel="nofollow noopener"><br></a></p>
<p>The game is also available on <a href="https://itunes.apple.com/us/app/watchlist-retro-arcade-shooter/id1169194343" target="_blank" rel="nofollow noopener">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.fletcher.watchlist" target="_blank" rel="nofollow noopener">Android</a>!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4pTXD-tdyXM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMzLnBuZw==/original/0VHYZi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMxLnBuZw==/original/8MA0oM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTI4LnBuZw==/original/1JP1DP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTI5LnBuZw==/original/pCXZ%2FH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMwLnBuZw==/original/8ZB632.png]]
<p>In <strong>We Are Champion</strong>, 3-6 players must compete in a divine game of cards to take over the world as the divine Patrons and their chosen Champion.<br>The game is a Table-Top Roleplaying Game, and takes roughly an hour to play.<br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDQucG5n/original/6bGadj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDMucG5n/original/98UDC9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDIucG5n/original/cGKeos.png]]
<p>
	<strong>WE ARE DOOMED</strong> is a twin-stick shooter where you zap polygon baddies with an absurdly overpowered laserbeam. Dive head-first into the action with reckless ambition, charge the <strong>SUPERBEAM</strong>, and zap everything out of existence in an instant. Chase high scores or just enjoy the beautiful explosion of geometry, colour and light.<span></span></p><ul><li>Pure arcade action. No cutscenes, storylines, or lengthy tutorials.</li><li>An overpowered laserbeam weapon, and the more ridiculous SUPERBEAM.</li><li>Waves mode: 30 waves that range from chill to hyper-intense.</li><li>Endless mode: An endless barrage of baddies. How many zones can you survive?</li><li>Quick to start, and quick to restart for "just one more" game.</li><li>A vibrant world of neon colours, bold shapes, and glitching geometry.</li><li>A beautiful, chill, and occasionally glitchy soundscape.</li></ul><hr style=""><p><strong>System Requirements</strong></p><ul>
	
</ul><p>Windows: Windows XP or greater.<br>Mac: Mac OS X 10.7 or greater.<br>A game controller is highly recommended, but not required.</p><hr><p>Check out the <a href="http://www.vertexpop.com/wearedoomed" rel="nofollow noopener">official site</a> for more screenshots and info.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qMHrK24g7T0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5NS5wbmc=/original/SiNoG5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5Ny5wbmc=/original/W88YEb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5OS5wbmc=/original/F%2Fv18D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTMwMS5wbmc=/original/M%2FRi%2F6.png]]
<p>You are all members of the Empress’ bodyguard, her constant companions.&nbsp;&nbsp;She is dead and you have a chance to remember her as she was, as you&nbsp;were when she was alive. Tell tales of her rise and eventual fall before&nbsp;discovering the fate of her Empire…&nbsp;</p>
<p>A four-page GMless story game for 3-6 players. Originally published in Codex: Leviathan.</p>
<p>You'll need counters of two different colours to pass amongst yourselves in play, or some way to record that for remote play.</p>
<p>***</p>
<p>All images © Wayne O’Connor&nbsp;<br><a href="https://druakim.artstation.com" rel="nofollow noopener">https://druakim.artstation.com</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvODQ1MTk2LzQ3MzgzNTkuanBn/original/V9vFQn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ1MTk2LzQ3MzgzNjAuanBn/original/32NDdr.jpg]]
<p>OST AVAILABLE:&nbsp;<a href="https://quarkimo.bandcamp.com/album/we-met-in-may-ost" rel="nofollow noopener">https://quarkimo.bandcamp.com/album/we-met-in-may-ost</a></p>
<p><u><em>We met in May</em>&nbsp;and went on a lot of dates.</u>&nbsp;This is a collection of vignette games about those dates, and the comedy that comes with getting to know someone.<br><br><u>What the heck do you DO in these games?</u><br>In&nbsp;<em>We Met in May</em>, you play as Nina while she's hanging out with her love interest, Jake. Nina and Jake get into various shenanigans together, which you play through as Nina. On one date, you may end up burying Jake in sand, chips and wine. On another, he may cook dinner for you! Each game is unique, and explores a different date between the two characters.<br><br><u>What do we mean by "vignette games"?</u><br>In our case, the vignette games contained in this collection are very short, focused games. Each one illustrates a different moment in the characters relationship (drawing on the developers own experiences!). The vignette games in&nbsp;<em>We met in May</em>&nbsp;are meant to be brief and memorable.<br><br>These aren't massive 400 hour RPGs, so don't expect bazillions of hours of gameplay. In fact, only expect... an hour or less! Unless you want to share these at a party--then you can get lots of hours out of the collection by watching your friends try to pour sand directly into Jake's mouth in one of the vignettes called Beach Date. ;)<br><br><u>Who are these games for?</u><br>Everyone! But specifically, people who enjoy romantic comedy, small games, character-driven stories and just... funny stuff in general will probably enjoy this collection.<br></p><p></p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/6gZikZD62Wk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjIuZ2lm/original/en3535.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjMuZ2lm/original/i6w7qe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzIxODA1NzEuanBn/original/8ryJH3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjQucG5n/original/uiB2Y6.png]]
<p><strong><img src="https://img.itch.zone/aW1nLzM4MTUxMDQucG5n/original/nXYFtk.png" loading="lazy"><br></strong></p>
<p><strong>It's not what you say, it's how you say it.&nbsp;</strong><em>We should talk</em>&nbsp;is a short-form narrative game that will make you think carefully about the words you choose,&nbsp;<strong>coming Thursday July 16th&nbsp;2020 to Windows, Mac, PlayStation 4, Xbox One, Linux, and Nintendo Switch.</strong>&nbsp;</p>
<p>In&nbsp;<em>We should talk</em>, you'll use the sentence spinner to piece together modular sentences in response to the in-game characters. Choose your words carefully to express yourself as you discuss ongoing problems about life and romance with Sam, your in-game partner, over text messages, while also chatting with friends and strangers at your favorite local bar.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNTQuZ2lm/original/Zd16XO.gif" loading="lazy"></p>
<p>The combination of words you choose impacts the conversations you have, how genuinely you can connect with your partner, and whether your relationship can survive the night. It's up to you how you respond—depending on how you communicate, you'll see one of many possible endings.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNTUucG5n/original/dMAc2C.png" loading="lazy"><br></p>
<p><strong>Personalized Choices:&nbsp;</strong>Using the sentence spinner, make choices that connect with you. Countless options abound—be yourself, or role play someone you never thought you could be.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNjcuZ2lm/original/mbMFJl.gif" loading="lazy"><br></p>
<p><strong>Unique Characters:&nbsp;</strong>Your night at the bar is more interesting thanks to all the unique people you encounter. Find your healthy balance between chatting with your friends and keeping up with the texts from your partner at home.&nbsp;</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MTUuZ2lm/original/4ZpzZg.gif" loading="lazy"><br></p>
<p><strong>Different Paths:&nbsp;</strong>Your choices drastically affect the way folks respond to you, leading to one of many different paths in each conversation. Will you be accommodating, flirty, stand-offish, or somewhere in-between?</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MTAuZ2lm/original/H6okJz.gif" loading="lazy"><br></p>
<p><strong>Multiple endings:</strong>&nbsp;Play again and again to find all 9 possible endings. Conclusions aren't based on a specific path or route the way many traditional narrative games branch, but instead the endings are based on the tone your responses express throughout the game. What do&nbsp;<strong>your</strong>&nbsp;relationships look like at the end of the night?</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MDguZ2lm/original/Leiv25.gif" loading="lazy"><br></p>
<p><strong>Realistic conversations:</strong>&nbsp;Experience the emotions that come with real conversations, whether it’s the the joy that comes with teasing a friend, the anxiety that comes with a heavy text message, or the frustration of navigating a touchy conversation with a creep. Express yourself as clearly as you can and hope that your conversational partner understands, though there's always a risk they might interpret your words differently than you intended.</p>
<p><a target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM4MTUxNjEucG5n/original/7dCT%2Fy.png" loading="lazy"></a><br></p>
<p><a href="https://www.weshouldtalkgame.com/press-kit/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzM4MTUxNjMucG5n/original/sOnAU5.png" loading="lazy"></a></p>
<p class="text-center"><strong><iframe src="https://open.spotify.com/embed/playlist/0P9AMgJ9ZxQVfT7Is9zG10" width="400" height="250" frameborder="0"></iframe><br></strong></p>
<p><strong>The We should talk Team:</strong></p>
<p><a href="https://toki-e.itch.io/" style="font-size: inherit">Kat Aguiar</a>,&nbsp;<a href="https://nobohb.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener">Nobonita Bhowmik</a>,&nbsp;<a href="https://ceschiii.itch.io/" style="font-size: inherit">Francesca Carletto-Leon</a>,&nbsp;<a href="https://jjb672.itch.io/" style="font-size: inherit">Jordan Jones-Brewster</a>,&nbsp;<a href="https://carolmertz.itch.io/" style="font-size: inherit">Carol Mertz</a>&nbsp;and&nbsp;<span></span><a href="http://jackschlesinger.com" style="font-size: inherit" rel="nofollow noopener">Jack Schlesinger</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MotLidp9IxE" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDQuanBn/original/gkrbUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDUuanBn/original/iq3aOA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDYuanBn/original/j1gcnJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDcuanBn/original/PgBtHP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MTAuanBn/original/l2nBV7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDkuanBn/original/2Wcvoh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDguanBn/original/RO2UlQ.jpg]]
<p><br></p>
<p>From the creator of&nbsp;<em><a href="https://togeproductions.itch.io/coffee-talk" target="_blank">Coffee Talk</a></em>, in collaboration with Rolling Glory Jam the creator of&nbsp;<em><a href="https://store.steampowered.com/app/658690/Rage_in_Peace/" target="_blank" rel="nofollow noopener">Rage in Peace</a></em>.<br></p>
<p><em>What Comes After</em>&nbsp;is a short experience, a heartwarming story, and a love letter to all of you who think you're a burden for other people.</p>
<p><img src="https://img.itch.zone/aW1nLzQ1NTAwNDcucG5n/original/JejhPO.png" loading="lazy"><br></p>
<p>Help Vivi finds herself through the journey that takes her to where people go after they died, to what comes after. Ride the train filled with the souls of the people, animals, and plants that are on their way to leave this world, and talk to them to learn about love, regrets, life, and death that haunt us every day until our time has come. All presented in a light-hearted way with a sprinkle of comedy and philosophy.<strong><br></strong></p>
<p><strong>Features:</strong></p>
<ul><li>A short heartwarming story that will stay in your heart and memory</li><li>A personal journey of learning how to love yourself</li><li>A tale filled with love and comedy</li><li>Colorful art to accompany your journey in the train not bound for the living</li><li>An easy to pick-up gameplay</li></ul>
<p><strong><br></strong></p>
<p><strong>A Game by&nbsp;</strong><br></p>
<p><strong>fahmitsu x Rolling Glory Jam</strong></p>
<ul><li>Mohammad Fahmi <a href="https://twitter.com/fahmitsu" dir="ltr" class="" rel="nofollow noopener">@fahmitsu</a>&nbsp;- <em>Design, Writing, and Directing</em></li><li><span class=""></span><span class="">Amatir Crew&nbsp;<a href="https://twitter.com/amatircrew" dir="ltr" class="" rel="nofollow noopener">@amatircrew</a>&nbsp;-&nbsp;<em>Production and Co-directing</em></span><span class=""><br></span></li><li><span class="">Giri Prahasta &nbsp;<a href="https://twitter.com/igrir" dir="ltr" class="" rel="nofollow noopener">@igrir</a>&nbsp;-&nbsp;<em>Programming</em></span></li><li><span class=""><span class="">Karina Utami Putri&nbsp;<a href="https://twitter.com/inyaa" dir="ltr" class="" rel="nofollow noopener">@inyaa</a>&nbsp;-&nbsp;<em>Art</em></span></span></li><li>Adhit Android&nbsp; <span class=""><a href="https://twitter.com/Adhit_Android" dir="ltr" class="" rel="nofollow noopener">@Adhit_Android</a>&nbsp;-&nbsp;<em>Audio</em></span></li><li><span class="">Galuh Elsa A.N.&nbsp;<a href="https://twitter.com/strobunny" dir="ltr" class="" rel="nofollow noopener"></a><a href="https://twitter.com/gal__el" target="_blank" rel="nofollow noopener">@gal_el</a>&nbsp;-&nbsp;<em>Co-writing</em></span></li><li><span class="">Vanisya Aulia Andini&nbsp;<a href="https://twitter.com/kroissan_" dir="ltr" class="" rel="nofollow noopener">@kroissan_</a>&nbsp;-&nbsp;<em>Additional Art</em></span></li><li><span class=""></span><span class="">Masdito Bachtiar&nbsp;<a href="https://twitter.com/mas_ittou" dir="ltr" class="" rel="nofollow noopener">@mas_ittou</a></span> -&nbsp;<em>Additional Audio</em></li><li>Featuring a song "Pulang, Kembali"&nbsp;by&nbsp;L'Alphalpha&nbsp;<span class=""><a href="https://twitter.com/L_alphalpha" dir="ltr" class="" rel="nofollow noopener">@L_alphalpha</a></span><span></span></li></ul>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DllQBJD95Fc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTQuanBn/original/PgZJc9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTUuanBn/original/Dq6Jpc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTYuanBn/original/LB4aX%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTcuanBn/original/5LJjeC.jpg]]
<p>Created in 2 weeks for the <a href="https://itch.io/jam/shock-and-awwww">Shock and Awww Game Jam</a>!</p>
<p>Content Warning: Contains audio and visual jumpscares.<br></p>
<p>Ren is bored in a cafe waiting for zir girlfriend on Halloween. Nothing could go wrong.<br></p>
<p><br></p>
<p>Controls: Mouse and W on the keyboard</p><p><br></p><p>*Note for Mac users: if the game will not run, please try launching it from the itch.io desktop app. There is a problem with Catalina where it unzips files improperly and unmarks them as executable.<br></p>
<p>By <a href="http://dragons-but-also-rabbits.itch.io/">dragonsbutalsorabbits</a></p>
<p>Additional programming by <a href="https://emerassi.itch.io/">Emerassi</a><br></p>
<p>Sounds from freesound.org: Medium Wind by kangaroovindaloo, Cat meow by TRNGLE, cat meow by tuberatanka, hiss2.wav by Reitanna, cell phone vibrate glass_loopable.wav by mobaudio<br></p>

[img width=500 [https://img.itch.zone/aW1nLzQ0ODA0NDkucG5n/original/vJiJca.png]]
<p>WHAT HAPPENED is a missing persons horror TTRPG about spiritual danger, cosmic encroachment, and inevitability. Players will find themselves pitted against an unknown&nbsp;spiritual terror while they try to solve the mystery of people going missing in their community. Game managers are encouraged to create a unique antagonistic horror while players are encouraged to band together and thrive under the watchful eyes of the Stars.&nbsp;<br></p>
<p>WHAT HAPPENED runs on a diceless&nbsp;system based upon Belonging outside Belonging. However, thorough understanding of BoB's system is not necessary to play.</p>
<p>The downloadable contents&nbsp;have&nbsp;20 pages of text, including</p>
<ul><li>rules</li><li>small illustrations</li><li>guidelines for setting creation</li><li>character creation and 5 unique playbooks</li><li>directions for the the Storyteller (game manager)</li><li>&nbsp;an illustration-free PDF designed specifically for screen readers and accessibility purposes.</li></ul>
<p>For many Indigenous people worldwide, sometimes we find ourselves asking WHAT HAPPENED? We've lost so many but they aren't truly gone. This game explores my reflections on that.</p>
<p>Play well.</p>
<p>If you are Indigenous and the&nbsp;price is prohibitive, please DM me on Twitter (@bignoseagenda)&nbsp;and I will set you up, no questions asked.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjQzNDgucG5n/original/4Q0Jwm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzIucG5n/original/BhiTbH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzMucG5n/original/NkLBca.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzQucG5n/original/YMcG9J.png]]
<p>A collaborative storytelling game about strange things that come out of the water, and how the community deals with it.</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjE4LmpwZw==/original/GgkMl9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjIwLmpwZw==/original/ltZ1Ag.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjIyLmpwZw==/original/vP8z7r.jpg]]
<p>A game made for <a href="https://itch.io/jam/what-is-so-cool-about-jam" target="_blank">What is So Cool About Jam?</a> inspired by a certain media franchise about Australia as well as other post-apocalyptic media. Community copies are available! Go on a wastelands road-trip with your friends!<br><br><br><br><br>also the tire graphic is CC content from dragonartz.net<br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODI4LzM5MDI1MzMucG5n/original/2LTMMn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODI4LzM5MDI1MzQucG5n/original/rIJnaY.png]]
<p class="text-justify"><strong>“What’s so cool about time loops?”</strong> lots of things, honestly. But what is cool about your time loop? <strong>Play to find out!</strong><br></p>
<p class="text-justify">Climb out the trenches of a war. Celebrate a family holiday. Take your final exams. Experience the day a meteor crashes into the city. Play the championship-winning game. Or witness the assassination of a politician. Again, and again, and again... At least until you manage to break the loop...</p>
<hr>
<p>You get an 8-Page PDF and hopefully a good time.<br></p>
<p>You need:&nbsp;</p>
<ul><li>2 six-sided dice</li><li>something to take notes with</li><li>a couple of people, one of which is willing to take on the role of GM</li></ul>
<hr>
<p class="text-justify"><strong>“What’s so cool about time loops?”</strong> was written by <a href="https://twitter.com/maxkaemmerer" rel="nofollow noopener"><strong>Max Kämmerer</strong></a> and is a hack of <a href="https://s-jared.itch.io/whats-so-cool-about-outer-space"><strong>“What’s so cool about outer space?”</strong></a> by <a href="https://twitter.com/infinite_mao" rel="nofollow noopener"><strong>Jared Sinclair</strong></a><strong>. </strong>It was created as a submission to <a href="https://itch.io/jam/what-is-so-cool-about-jam"><strong>“What's So Cool About Jam”</strong></a> &amp; <a href="https://itch.io/jam/monthly-micro-jam-august-2020"><strong>“Monthly Micro Jam: August 2020”</strong></a><strong>.</strong><br></p>
<p class="text-justify">You can find Max’s other work on <a href="https://maxkaemmerer.itch.io/"><strong>itch.io</strong></a><strong>. </strong></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5Nzk1MjYucG5n/original/jGly2q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5ODE2NjcucG5n/original/w2b5Of.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5ODE5NDYucG5n/original/Bt5TAi.png]]
<p><strong>Check out our new game, "Milky Way Prince". Now available!</strong> 
<br>
</p><p><br></p>
<iframe src="https://itch.io/embed/670040" width="552" height="167" frameborder="0"><a href="https://santaragione.itch.io/milkywayprince">Milky Way Prince – The Vampire Star by Santa Ragione</a></iframe>
<p></p>
<p><strong>Wheels of Aurelia</strong> is a narrative road trip game set in the roaring Italian 70s. Half racing game, half interactive fiction, it tells the story of Lella, a restless woman driving on the roads of the western coast of Italy, the famous Via Aurelia.<br></p>
<p><br>Wheels of Aurelia plays like an old-school isometric arcade racer, except that you get to chat with your passenger while driving. The story takes places at the end of the 70s – a time of terrorism, kidnappings, and political turmoil in Italy – and it will introduce you to that world and its dynamics thorough a cast of characters that you have never met in a video game. It's up to you to discover their motivations for driving along the coast of Italy and away from their homes.<br><br>Based on your choices – and the places you'll decide to visit – you may end up in car chases, illegal street races, or in tense debates that will make you wonder who your travel companions really are.<span></span></p>
<p><strong>NOTE</strong>: Steam keys are included!</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/TZ0jvh8uNEk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA5LnBuZw==/original/j6UaNh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA1LnBuZw==/original/cPrJON.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA2LnBuZw==/original/4lto0z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA4LnBuZw==/original/k9cZub.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA3LnBuZw==/original/93qjoc.png]]


<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM5NDU0NDkuanBn/original/z2DvCt.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><span></span><br></figure>
<p><em>When We First Met</em> is a short visual novel made for the<em> <a href="https://itch.io/jam/i-cant-write-but-want-to-tell-a-story" target="_blank">I Can't Write</a></em> game jam.&nbsp;It is also a sequel to my comic <a href="https://twitter.com/madocactus/status/1279481143532888066" target="_blank" rel="nofollow noopener"><em>Cross My Heart.</em></a><span></span></p>
<p><strong>Theo</strong>'s&nbsp;mother and father are important nobles in the Soleilment Empire - and they've just been summoned to a crucial meeting at the Imperial palace.&nbsp;Unfortunately, Theo's coming with them - and she's not as eager to visit as her parents are.&nbsp;</p>
<p>But word has it that someone new and important&nbsp;has just arrived at the palace. Curious, Theo goes out to find them...</p>
<p><img src="https://img.itch.zone/aW1nLzM5NDU0NTEuanBn/original/8ba85U.jpg" loading="lazy"><br></p>
<ul><li>Around 2000 words of dialogue.</li><li>An interactive exploration system - talk to the palace's inhabitants,&nbsp;and listen in on conversations.</li><li>Several beautiful CGs, backgrounds and character sprites.</li><li>A&nbsp;short story with a heart-warming ending.</li><li>All the perks of a visual novel lovingly built in 2 weeks.&nbsp;</li></ul>
<p><img src="https://img.itch.zone/aW1nLzM5NDU0NTQuanBn/original/fRJPyE.jpg" loading="lazy"><br></p>
<p>Art, Scenario, Code - <a href="http://www.twitter.com/madocactus" target="_blank" rel="nofollow noopener">Mado</a></p>
<p>Music - <a href="https://maoudamashii.jokersounds.com/list/bgm4.html" rel="nofollow noopener">Maou Damashii</a></p>
<p>SFX - <a href="https://www.tam-music.com/" rel="nofollow noopener">TAM Music Factory,</a> <a href="https://opengameart.org/content/51-ui-sound-effects-buttons-switches-and-clicks" rel="nofollow noopener">Kenney</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMDQ2NDguanBn/original/s58V5P.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMDQ2NDcuanBn/original/ZzV%2BZU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMzAyMjEuanBn/original/M5dVgw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMzAyMjguanBn/original/SPqxwT.jpg]]
<p>You like stories, right? Of course you do, or else you wouldn't be here. I have a proposition for you - just hear me out for a second.<br></p>
<p>&nbsp;I just transferred to&nbsp;[REDACTED] Academy, a boarding school for the most elite and (occasionally) gifted students across the country. Today, February 12th, 2014, is my first day. Changing schools right in the middle of the year is tough, especially since the entire student council seems to want a piece of me,&nbsp;but that's not what I need your help with.</p>
<p><strong>You see, someone in this school killed my father, and I won't stop searching until I find out who.</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1MTcxMjEucG5n/original/PGVri%2B.png" loading="lazy"></p>
<h4>ABOUT</h4>
<p><em>Who Killed My Father Academy!&nbsp;</em>is a mystery romance&nbsp;visual novel with heavy meta elements&nbsp;about fake-dating boys to find out who killed our enigmatic&nbsp;protagonist's father. It features:</p>
<ul><li>A branching narrative with&nbsp;5 character routes and&nbsp;1 "True" route</li><li>Two endings per character</li><li>F/M, M/M, and F/F&nbsp;content</li><li>Around 60,000&nbsp;words (Roughly 4-5 hours playtime)</li><li>Classical music soundtrack using public domain recordings</li><li>Name the protagonist!</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzE1MTcxMjIucG5n/original/jpX8ou.png" style="color: inherit" loading="lazy"><br></figure>
<h3>CAST</h3>
<p>There are 5 main characters of interest in WKMFA, each with their own route. Could any of them be the very culprit our protagonist is searching for...?&nbsp;</p>
<p>Well, that's what you're playing to find out, isn't it? I mean, you're the one here with the ability to use save states, not her.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MDIxMDMucG5n/original/yTCGPA.png" loading="lazy"><br></p>
<h4>Crispin</h4>
<blockquote><strong>AKA</strong>: The Competent One<br><strong>Position</strong>: Student Council President<br><strong>DOB</strong>: 12/13/95 (Sagittarius)<br><strong>His Family</strong>: Is on the school board<br><strong>Fun Fact</strong>: Feels a wide, satisfying range of emotions, just like everyone else<br><strong>Testimonials</strong>:<br>"<em>He's, um, very serious and capable!</em>" - Ellis<br>"<em>An unfeeling doll wrapped in human skin</em>" - Gia<br>"<em>Oooh, I do hope he makes it&nbsp;out alright...</em>" - Stacy<br><strong>Did He Do It?</strong> If he did, it was with a straight face</blockquote>
<h4><img src="https://img.itch.zone/aW1nLzE0OTM4NTkucG5n/original/RDyGr%2B.png" loading="lazy"></h4>
<h4>Dux</h4>
<blockquote><strong>AKA</strong>: The Playboy
<br><strong>Position</strong>: Student Council Vice President<br><strong>DOB</strong>: 6/9/96 (Gemini)
<br><strong>His Parents</strong>: Host a show on the Food Network<br><strong>Fun Fact</strong>: Has streamed Africa by Toto over 1500 times
<br><strong>Testimonials</strong>:
<br>"<em>Don't ask questions you aren't prepared to hear the answer to</em>" - Victor
<br>"<em>Look, he's just hot, okay? I can admit that</em>" - Olive
<br><strong>Did He Do It?</strong> If he thought it'd get him out of here</blockquote>
<h4><img src="https://img.itch.zone/aW1nLzE1MDIwNjkucG5n/original/b9yrgJ.png" loading="lazy"></h4>
<h4>Ellis</h4>
<blockquote><strong>AKA</strong>: The pretty boy<br><strong>Position</strong>: Student Council&nbsp;Treasurer<br><strong>DOB</strong>: 10/3/95 (Libra)<br><strong>His Family</strong>: Um, works in finance, I think?<br><strong>Fun Fact</strong>: Wears literally nothing but turtleneck sweaters regardless of season<br><strong>Testimonials</strong>:<br>"<em>A wonderful boy who tries his best!</em>" - His Grandmother<br>"<em>Thought I saw him carrying a knife once??</em>" - Akua<br>"The guy's pretty, but, like, that's it" - Dux<br><strong>Did He Do It?</strong> If someone else planned it out for him</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MDIwOTQucG5n/original/KECCIf.png" loading="lazy"></p>
<h4>Victor</h4>
<blockquote><strong>AKA</strong>: The childhood friend<br><strong>Position</strong>: Student Council Secretary<br><strong>DOB</strong>: 5/31/96 (Gemini)<br><strong>His Family</strong>: Runs a high fashion label<br><strong>Fun Fact</strong>: His outfit costs more than your mortgage<br><strong>Testimonials</strong>:<br>"<em>The worst Gemini I've ever met, including myself</em>" - Dux<br>"<em></em><em>Um, he's always been kind to me?</em>" - Ellis<br><strong>Did He Do It?</strong> He'd never have the guts</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MDIwOTkucG5n/original/LjbDiG.png" loading="lazy"></p>
<h4>Gia</h4>
<blockquote><strong>AKA</strong>: The roommate<br><strong>Position</strong>: Head Student Ambassador<br><strong>DOB</strong>: 5/4/96 (Taurus)<br><strong>Her Family</strong>: Is very proud of her!<br><strong>Fun Fact</strong>: Hasn't cleared out her voice mail box in, like, AGES, haha...<br><strong>Testimonials</strong>:<br>"<em>#PATTYGATE2013</em>" - Akua<br>"<em>Remarkably accommodating despite the company she keeps</em>" - Crispin<br><strong>Did She Do It?</strong> C'mon, really? HER?</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MTcxMjMucG5n/original/mRIy62.png" loading="lazy"></p>
<h3>DETAILS &amp; ADDITIONAL CREDITS</h3>
<h4>Content Warnings For:</h4>
<ul><li>Non-graphic depictions of drowning &amp; being submerged in water</li><li>Subtle depictions of surveillance</li><li>Discussions &amp; threats&nbsp;of violence, mentions of parental death (it is a murder mystery after all)</li><li>Frequent 4th wall breaking by multiple characters - it gets very meta at times</li><li>Depictions of emotional manipulation</li></ul>
<p>For more information on the specifics of these scenes or any type of content not listed here, feel free to reach out in the comments or via email at ntagonistic@gmail.com.</p>
<p><strong>Any proceeds from the sale of WKMFA will be donated to&nbsp;<a href="https://www.dreamyard.com/" target="_blank" rel="nofollow noopener">DreamYard</a>, a Bronx-based youth arts education&nbsp;organization.</strong><br></p>
<h4>Additional Background Credits</h4>
<blockquote><strong></strong><em><a href="https://commons.wikimedia.org/wiki/File:Ambulance_6.jpg" rel="nofollow noopener">"Ambulance 6" by Rama on Wikimedia Commons</a></em><br><em><a href="https://www.flickr.com/photos/u07ch/27324185360/" rel="nofollow noopener">"Office" by Chris Hoare on Flickr</a></em><br><em><a href="https://unsplash.com/photos/M3CeIy7qhUg" rel="nofollow noopener">"r00m" by Maranatha Pizarras on Unsplash</a></em><br><em><a href="https://unsplash.com/photos/okBa2fFynvs" rel="nofollow noopener">"Pub Life" by Juliane Liebermann on Unsplash</a></em><br><em><a href="https://www.flickr.com/photos/145352212@N07/31419888581/" rel="nofollow noopener">"Dressing Room 2" by FNSBSD Building Rentals on Flickr</a></em><br><em><a href="https://commons.wikimedia.org/wiki/File:HK_Sheung_Wan_Civic_Centre_%E4%B8%8A%E7%92%B0%E6%96%87%E5%A8%9B%E4%B8%AD%E5%BF%83_lift_metal_interior_April-2012.JPG" rel="nofollow noopener">"HK Sheung Wan Civic Centre Lift Metal Interior"&nbsp;&nbsp;by ONeGIOrelo on Wikimedia Commons</a></em><br><em><a href="https://unsplash.com/photos/OLIcAFggdZE" rel="nofollow noopener">"Dirty Mug Collection Shelf" by Jay Wennington on Unsplash</a></em><br><em><a href="https://unsplash.com/photos/9hP4rqi080Y" rel="nofollow noopener">"Info" by Michael D. Beckwith on Unsplash</a></em><br><em><a href="https://www.flickr.com/photos/mastermaq/9473959695/" rel="nofollow noopener">"Mover Office" by Mack Male on Flickr</a></em><br><em><a href="https://unsplash.com/photos/eHRzs3zunvQ" rel="nofollow noopener">"Lobby" by Victor Xok on Unsplash</a></em></blockquote>
<blockquote><em>All images used under <a href="https://creativecommons.org/licenses/by/2.0/" rel="nofollow noopener">Creative Commons 2.0 License</a></em></blockquote>
<p>All fair use music recordings from <a href="https://musopen.org/" rel="nofollow noopener">musopen.org</a></p>
<h4>Updates</h4>
<p><strong>11/29/18</strong>: Version 1.1 released, minor user input fixes/additions. OST list is actually accurate now.&nbsp;</p>
<p><strong>NOTE</strong>: When downloading a new version you MUST begin&nbsp;a completely new save file or else this will cause a crash during the true route.&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMzUucG5n/original/sNTXiv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyNTEucG5n/original/C5w3pY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMjkucG5n/original/aScVjH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMjYucG5n/original/jb8kyt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2NDgyODQucG5n/original/FwmGYk.png]]

<p><img src="https://img.itch.zone/aW1nLzEzMzAwMTAuZ2lm/original/LLm8g0.gif" loading="lazy"></p>
<p>You are <strong>Sprocket</strong>, an adorable ferret who knocks things over and steals junk on a space station in the far future! Escape your playpen and make your way to the shuttlebay with the most stuff!</p>
<p><em>Widget Satchel</em> is a daunting adventure for one little thief, with fiendish puzzles and tricky platforming, but don't worry: You may lose some Widgets (or your socks!) along the way, but Sprocket can’t get hurt and there is no “game over.” Of course, it will take all of your ferret-y determination if you hope to stash away every Widget, discover every Trinket, and try on every pair of Socks!</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTQucG5n/original/aYkN7b.png" alt="Get Widgets" title="Get Widgets" loading="lazy"></p>
<p>Widgets: you want them! But beware, every widget you put in your satchel makes it heavier, making it a little bit harder to jump to the next platform or scramble past the station's maintenance bots. Levels can be relatively easy if you don't collect <em>any</em> Widgets, but they become a greater challenge as you fill Sprocket’s satchel.</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTUucG5n/original/jniblb.png" alt="Build Doohickeys" title="Build Doohickeys" loading="lazy"></p>
<p>You'll reach special <strong>Fabricator rooms</strong> in each level, where you can exchange your Widgets for power-ups called Doohickeys. <em>Bots giving you trouble?</em> Equip yourself with <strong>The Wrench</strong> and show them what's what. <em>Widget out of reach?</em> Put on <strong>Jef's Boots</strong> and get up there! There are five Doohickeys to help you on your adventure, and you can build them in any order, so you can play the game (and discover its secrets) however you like.</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTYucG5n/original/ugzDwX.png" alt="Cause Mischief" title="Cause Mischief" loading="lazy"></p>
<p>High scores, hidden collectables, and secret paths are great, sure, but in <em>Widget Satchel</em> you can also just knock stuff over and get into trouble if you prefer! And the more mischief you do, the more <em>mischief points</em> you'll earn! What are mischief points? It's not important, but there are an awful lot of them!</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNDkucG5n/original/0OOb%2BF.png" alt="What Else?" title="What Else?" loading="lazy"></p>
<ul>
<li>Original soundtrack that dynamically reacts to your progress.</li>
<li>Replayable areas with "metroidvania-lite" pathing.</li>
<li>Sock-exclusive inventory system.</li>
<li>Trapdoors, lifts, hydraulic pillars, and other nonsense machinery to manipulate.</li>
<li>20+ game-changing "Feats" to achieve.</li>
<li>Human characters to mildly inconvenience!</li>
<li>Piles and piles of junk!</li>
<li>...and more!</li></ul><p>
</p><p><em><strong><br></strong></em></p><p><em><strong>-------<br>Note: </strong>The Steam code included as a bonus is not valid for users in&nbsp;Japan, as the game has a different publisher in that region. If you are in Japan, feel free to gift the Steam code to a friend in another region.</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/2NkaDTN9SFY" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzEzMTU3ODIucG5n/original/yHL7%2BW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzEzMjkzMDcucG5n/original/mnfWbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzgucG5n/original/ja0Fu6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzkucG5n/original/2KK83J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODIucG5n/original/Bfr5Hc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODMucG5n/original/HG4Av%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODAucG5n/original/PjH2%2F0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODQucG5n/original/OUVZkn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODUucG5n/original/r%2Bjw06.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzcucG5n/original/tjlTn6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODEucG5n/original/yu1nl5.png]]
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/steamheader.png?t=1506801682" loading="lazy"></figure>
<p><em>Will Glow the Wisp is the first melee bullet hell platformer without platforms, with unique particle based visuals and movement mechanics.</em><br></p>
<h2><em><em><em>Escape from a magical prison</em></em></em></h2>
<figure><em><em><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/Escapingprisions.png?t=1506801682" loading="lazy"></em></em></figure>
<p><em><em><br></em></em></p>
<h2><em><em><em>Survive bullet hell</em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em><br> </em></em><em><em><br></em></em></h2>
<figure><em><em><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/hearthDashAction.png?t=1506801682" loading="lazy"></em></em></figure>
<p><em><em></em></em></p><em><em>
<h2>Beat the developer</h2>
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/devstuff.png?t=1506801682" loading="lazy"></figure>
<p>You are able to play against the Developer in “Will Glow the Wisp”, but only the best players will be able to handle this challenge. Do you want to give it a try?</p>
<h2><em><em>Features</em></em></h2>
<em></em><br></em><ul><li><em><em><em>Play vs. another player’s recordings 
    </em></em></em></li><li><em><em><em>Beat the Developer 
    </em></em></em></li><li><em><em><em>Global Highscore
    </em></em></em></li><li><em><em><em>Lots of Particles and Bullets</em></em><em><em></em></em><em></em></em></li></ul>
<p></p>
<p></p>
<p></p></em>

<iframe width="720" height="450" src="https://www.youtube.com/embed/cxRW6JtWatA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjgucG5n/original/ORJuBk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjMucG5n/original/fYsEwL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjQucG5n/original/Lyq35J.png]]
<p>Willful is an adventure game that borrows elements from Mega Man, Metroid, and other classics from the 80s and 90s.<br>The Player takes up arms as a sacrificial offering named Will.<br><br>As the player explores the different areas in the game they can spend money on powerups and golden carrots which grant access to new worlds.<br>It's up to you to stop the reign of a mysterious entity named Behemoth, and his group of crazed followers!<br><br>Stuff you can do in Willful:<br><br>-Shoot things<br><br>-Make friends with a rock golem<br><br>-Buy from sketchy carrot dealers<br><br>-Traverse a giant computer chip<br><br>-Battle against bosses<br><br>-Explore ten different worlds</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/MLnYS6kDdh0" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNTk0Lzc5MjI0MC5qcGc=/original/KZ%2BG0n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNTk0Lzc5MjIzOC5qcGc=/original/gGrWGe.jpg]]
<p>Windosill is a point-click-and-drag puzzle-toy, in which you guide a toy car through 10 miniature worlds. </p>
<p>A playable demo is online at <a href="http://windosill.com" rel="nofollow noopener">http://windosill.com</a>&nbsp;in browsers that support Flash. (Non-Flash&nbsp;browsers will redirect to this page.)</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTA5LmpwZw==/original/EEkhyu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEwLmpwZw==/original/ew6eCV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEyLmpwZw==/original/itiHDZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEzLmpwZw==/original/dA%2BL%2F5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTE0LmpwZw==/original/WiKPhw.jpg]]
<<list-links "[tag[Windows]sort[title]]">>
<p class="text-center"><em></em></p><p><strong>Witchball</strong> is a post-reality racing game played by children in the year 2601.</p>
<p>Massive environmental change has made much of the world inaccessible, and long-distance travel impossible. Communities are isolated, but communication has advanced to the point where short distances between people barely exist at all.</p>
<p>In Witchball, two players compete in a high speed foot-race while simultaneously playing a 2D pong-like ball game on the surface of the screen. Points are gained in both aspects and tallied per lap, so it’s important -- and tricky -- to manage the space better than the opponent.</p>
<p class="text-center">_________________________________________</p><p><strong>( IMPORTANT NOTE:&nbsp; Some flashing lights in the 2601 stage!&nbsp;)</strong><br></p>
<p class="text-center"><span></span><strong>**&nbsp;LOCAL&nbsp;MULTI-PLAYER ONLY **</strong><br></p>
<p class="text-center">(Two XBOX controllers recommended,</p>
<p class="text-center">keyboard works fine though!)</p>
<p class="text-center"><strong>*^*^*</strong></p>
<p class="text-center"><strong>&gt;&gt; Four locations and 3 modes,&nbsp;for a total of 9 Tracks &nbsp;&lt;&lt;</strong></p>
<p class="text-center"><strong>&gt;&gt; 8 different mysterious special abilities &lt;&lt;</strong></p>
<p class="text-center"><strong>Have fun!</strong></p>
<p class="text-center"><strong>*^*^*</strong></p>
<p><em>Originally used for fishing, glass buoys became associated with witches during witch-hunts in the late 1600s. Traditionally, a ‘witch ball’ is a glass orb hung in a home to ward away bad or evil spirits. The act of play, and games by extension, can function in a similar way -- kind of like a respite from the darkness. Games won’t solve any problems, and neither will a ward, but safeguards and rest are necessary parts of life and games can provide that. A game as a ward, not an escape.</em></p>
<p class="text-center">_________________________________________</p>
<p class="text-center">made with GameMaker Studio 1.4</p>
<p class="text-center"><strong>&lt;&nbsp;<a href="http://twentycapitalletters.com/Witchball" rel="nofollow noopener">http://twentycapitalletters.com/Witchball</a>&nbsp;&gt;</strong><br><br></p>
<p class="text-center"><strong>AMAZE Festival, </strong>Nominee - Human Human Machine Award<br></p>
<p class="text-center"><strong>IGF 2018,&nbsp;</strong><a href="http://igf.com/article/2018-independent-games-festival-announces-main-competition-finalists" target="_blank" rel="nofollow noopener">Honorable Mention</a>&nbsp;- Nuovo Award<strong></strong><br></p>
<p class="text-center"><strong>Ludicious&nbsp; 2018, <a href="http://twitter.com/LudiciousFest/status/954461768406970369" target="_blank" rel="nofollow noopener">WINNER</a>&nbsp;-</strong> Innovation in Game Award<strong></strong><br></p>
<p class="text-center"><strong>IndieCade 2017, </strong>Official Selection<br></p>
<p class="text-center"><strong>IGF 2017</strong>,&nbsp;<a href="http://www.igf.com/article/2017-independent-games-festival-announces-main-competition-finalists" target="_blank" rel="nofollow noopener">Honorable Mention</a>&nbsp;- Nuovo Award<br><br><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1OC5wbmc=/original/JJbfHg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1NS5wbmc=/original/lKLkRg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1NC5wbmc=/original/LyGdA5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1Ny5wbmc=/original/%2FlgY21.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1Ni5wbmc=/original/hxbbs7.png]]

<p>A 7k&nbsp; word Twine game about working retail and dealing with magic managers who hate each other. So, a normal shift.</p>

[img width=500 [https://img.itch.zone/aW1nLzU5ODYzNDMucG5n/original/jzEBV6.png]]


<p><img src="https://img.itch.zone/aW1nLzU3OTQxOTIucG5n/original/WoPSEf.png" loading="lazy"></p>
<p>The four nations of Wonderland meet every year to agree on shared policies and enact their various schemes against each other. There are personal vendettas to resolve and enchantments hidden everywhere, and did someone mention the dreaded Alice? You are the White Rabbit, and your job is to organise the schedule for the annual summit. Every decision you make affects the destiny of Wonderland!<br></p><p><br>Will the King of the barbaric desert of Clubs declare active war on the pastoral paradise of Hearts? Will Prince John of the psychedelic land of Spades be able to elope with Princess Julie of the wealthy Diamond nation - two nations that are deadly enemies? What's up with the King and Queen of Spades's weird marriage? Does the King of Hearts suspect his loyal Duke Jorge of having an affair with his wife? Explore this and much more as you negotiate the likes and dislikes of the twelve guests of the summit.<br><br>Features:<br>- lots of replayability with 42 achievements, 14 characters, and 25000+ words in almost 3000 lines of dialogue - each playthrough only reveals at most 1/12th of the whole fabric of the story<br></p>
<p>- fully voice-acted dialogue</p>
<p>- gallery with 36 pieces of unlockable art</p>
<p>- choose between simple choice menu for first time players, and the drag and drop choice menu for the power players, with randomizer, repeat and reset functions</p>
<p>- player codex containing unlockable information about characters' relationships, secrets, motivations, and player goals and event history</p>
<p>You can find a walkthrough guide for the game here:&nbsp;<a href="https://docs.google.com/document/d/1WLfe-Y7GN-gUu83B7zCMOldoLzYBN29DTWyzQ_ur-38/edit?usp=sharing" rel="nofollow noopener">https://docs.google.com/document/d/1WLfe-Y7GN-gUu83B7zCMOldoLzYBN29DTWyzQ_ur-38/...</a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/SuiseS3nY5U" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzMucG5n/original/IbxlIp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzQucG5n/original/kRgLsy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzIucG5n/original/hbSLfK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzAucG5n/original/nWQHrY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzEucG5n/original/6qn7j%2B.png]]
<p>Story</p>
<p>It's your first day at the Galactic Federation of Several Planets, and your job is to destroy as many enemy ships as possible with a giant laser. Seems simple enough. The federation seems nice enough, but it does feel a little strange that they can be so cheerful about causing such wanton destruction. Well, as long as you get paid it will be fine. Right?<br></p>
<h2>Gameplay</h2>
<p>Like the name implies in wonShot you get ONE shot. One shot each level to find the perfect spot to fire your laser and blow up as many enemy ships as you possibly can. Create massive chain reactions with numerous types of bombs, ships, and environmental hazards to utterly annihilate the rebel fleet. Be careful though, you need to reach a minimum score per level or you WILL be terminated.</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/gtZyQvTxHTs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NzEucG5n/original/1fOA2a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NzAucG5n/original/HrDtUe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzU0Njc4MDEuZ2lm/original/PPi%2BfS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NjYucG5n/original/iA2X5Z.png]]
<p>Being a witch isn't as fun as it sounds. Sure, there’s flying around on a broomstick, talking to spirits, learning dangerous secrets man was not meant to know, dancing naked under a full moon (if you’re into that sort of thing)… but then, there are also <em>people</em>. People who always seem to need your help. People who are scared you’ll turn them into frogs. People who want you to turn their enemies into frogs.</p>
<p>If you can fly on a broomstick, someone wants you to get their kid's kite down from a tree. If you're on a first-name basis with <em>one</em> malevolent spirit, everyone thinks you can exorcise their creaking floorboards. And then there are the constant requests for love potions.</p>
<p>Worse: You're not the only one with magical powers, and the others range from terrifying creatures from other planes to... just <em>people</em>. Like your fellow witches, who obviously have no idea what they’re doing. Who knows what trouble they could cause, fiddling with the balance of power?</p>
<p>Worst of all: Sometimes, once in a blue moon, you might need their help.</p>
<h2>Game info</h2>
<p><em>Wool of Bat</em> is a No Dice, No Masters hack where you play a fractious not-coven of witches, and elements of the world they live in. It's inspired by Terry Pratchett’s Discworld and Tiffany Aching books, about a million different fairy tales, and a dash of Appalachian folklore.</p>
<h3>Version 0.1</h3>
<p>This is an early playtest version. If you find problems, please let me know! This version is Pay What You Want, but paying any amount gets you all future updates, including the final digital version. If you find a problem or have questions or comments, you can fill out this form: <a href="https://forms.gle/wfDh6m7KRH9VfKBq8" rel="nofollow noopener">https://forms.gle/wfDh6m7KRH9VfKBq8</a>. I'll send you a code for free future versions as thanks for (non-trolling) feedback.<br></p>
<h3>Credits</h3>
<p>© 2021 by <a href="https://bethanyharvey.itch.io">Bethany Harvey</a>. Licensed under a <a href="http://creativecommons.org/licenses/by-sa/4.0" rel="nofollow noopener">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
<p>Cover art by <a href="https://www.etsy.com/shop/AtticStudioWV" rel="nofollow noopener">Sara Bean</a></p>
<p>Game mechanics based on the "No Dice, No Masters" system created by Avery Alder. </p>
<h3>Playtesters</h3>
<p>Jesse A., Terry Batley, Owen Brush, Elizabeth H, <a href="https://www.instagram.com/thespacejamber" rel="nofollow noopener">Amber Logsdon</a>, <a href="https://twitter.com/yayforbooks" rel="nofollow noopener">Maria M</a>, Puckett, <a href="https://SparkActing.com/mander" rel="nofollow noopener">Mander Zander</a>, Adam O, <a href="https://twitter.com/mvertlib" rel="nofollow noopener">Mark V</a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMjEucG5n/original/uQqQmA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMTQucG5n/original/AGQUb7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMTgucG5n/original/C0lH1M.png]]
<p>In <em>Words, Wilting </em>you and a friend will take the role of two young lovers of the same age whose love must be concealed. To aid in this, the lovers have created a way to communicate secretly through flowers adorning their outfits, inspired by the Victorian floral language of love.&nbsp;<br></p>
<p>Play consists of&nbsp; you selecting index cards, each featuring a flower from the language you create together, and interpreting the card the other player selected, hoping to remember the hidden meaning you crafted together. You then create a scene together around what the cards meant and if the lovers remembered the language they made.</p>
<p>PDF: If you downloaded it before the file was named WordsWiltingV2 please redownload. Not only is the minor image issue fixed, it should now also have...Screen Reader accessibility!</p>

[img width=500 [https://img.itch.zone/aW1nLzI2MzI4NjQucG5n/original/Z%2FCC2S.png]]
<p>Working For the Corp is a cyberpunk print and play Descended From the Queen game.&nbsp; You will play characters who work at a megacorp called "The Corp" who are tasked with defending sensitive information from runners.&nbsp; Will you defend The Corp?</p>
<p>I have brought Jess Meir @burst0fhope on to add some cards and it has really changed the game, improving it dramatically.</p>
<p>Cover and card art by @diwataMANILA</p>
<p>Edited by GC Fournier @Callishka</p>
<p>Layout by Devon Apple @devonapple</p>
<p>This is the final printer product.&nbsp; Check it out and let me know on Twitter @KDavidson925 whether or not you Defend The Corp!&nbsp;</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3Nzc0MDIucG5n/original/UlaZ4X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDcucG5n/original/GZLc0y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDgucG5n/original/bKeSYw.png]]
<h4>UPDATE 1: MARKETPLACE</h4>
<p>The pack is now double the size, with new marketplace tiles, NPCs and lots of environment tiles, allowing for much more variety in your maps!&nbsp;</p>
<p>A small collection of tiles and sprites for a retro-styled art or video game project.<br></p>
<h4>ABOUT</h4>
<p>The world of Solaria was an epic RPG that I never got around to making, so instead, it will be taking the form of a series of asset packs that you can use to create your own game!&nbsp;</p>
<p>The first of these is the Rural Village pack, where the hero starts their journey!&nbsp;</p>
<p>This is my first real pixel art/asset project, so I'm still working things out!&nbsp;It is still in development, and likely will be for a while. If there is anything you'd like to see added or if you have any feedback, let me know and I'll make the changes&nbsp;in an update!</p>
<p>The palette used is <a href="https://lospec.com/palette-list/resurrect-64" rel="nofollow noopener">Resurrect64</a> by Kerrie Lake!</p>
<h4>CONTENTS</h4>
<ul><li><strong>16x16 Rural Village tileset: </strong>764 individual tiles.&nbsp;<ul><li>Grass and dirt, 4 walls, 9 roofs, 3 cliff colours, 12 trees and bushes in 2 shades, rocks, decorations, fences, 2 crops with 3 growing stages and more.</li><li>NEW! Almost 200 marketplace tiles, with canopies, rugs, and items, including weapons, potions and food!</li></ul></li><li><strong>Tile Animations:&nbsp;</strong><ul><li>4-frame animations for&nbsp;water, flames, fish and chests.</li></ul></li><li><strong>6 Character Sprites:&nbsp;</strong><ul><li>4-frame&nbsp;walking and idle animations&nbsp;in 4 directions. One character features attack animations in 4 directions.</li></ul></li></ul>
<p>All assets are in PNG format.</p>
<h4>FUTURE</h4>
<ul><li>More character sprites! Monsters, NPCs, creatures and animals.</li><li>More tile animations!</li><li>More character animations! Fishing, farming, combat and more.</li><li>More tile variations! Interiors, colour variations.</li><li>More assets! Sci-fi, beach, desert, city, modern.</li><li>Possibly UI elements, autotiles and other stuff if there is demand.</li></ul>
<h4>LICENSE</h4>
<p>You can use these assets in any project, commercial or non-commercial. Credit isn't necessary but very much appreciated. If you do make something using these assets, let me know, I'm excited to see how people use them!<br></p>
<p>You can edit them as much as you like, but cannot repackage, resell or&nbsp;redistribute them in any way, no matter how much they're edited.<br></p>
<h4>SUPPORT</h4>
<p>You can&nbsp;follow me on&nbsp;<a href="https://www.twitter.com/jamiebrownhill_" rel="nofollow noopener">Twitter</a>&nbsp;or&nbsp;<a href="https://www.instagram.com/jamiebrownhill/" rel="nofollow noopener">Instagram</a>!&nbsp; You can use the button below to support me on <a href="https://ko-fi.com/jamiebrownhill_" target="_blank" rel="nofollow noopener">Ko-fi</a>!</p>
<p><a href="https://ko-fi.com/X8X24WDR3" target="_blank" rel="nofollow noopener"><img height="36" style="border:0px; height:36px" src="https://cdn.ko-fi.com/cdn/kofi4.png?v=2" alt="Buy Me a Coffee at ko-fi.com" loading="lazy"></a></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjczLmdpZg==/original/pgamnj.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC81OTIzMTQwLmdpZg==/original/zQ2epB.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjc0LmdpZg==/original/FBxmMU.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjY3LmdpZg==/original/%2Blca6r.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC81OTIzMTU5LnBuZw==/original/eyyr1w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjcxLmdpZg==/original/IyoY8g.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjU2LnBuZw==/original/9OsWwX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82MTAwMjYxLnBuZw==/original/MYCDmO.png]]
<p><strong>Welcome to Wyldrvir!&nbsp;<br><br>Core Book Edits thanks to Cash! :D&nbsp;</strong></p>
<p><span class="">Were a totally free new TTRPG that has been working in a combat free and wholesome Saturday morning cartoon style of world with adorable art and simple roleplay focused storytelling! We are a team of young adult writers ages ranging from 18-21 and we have been making this game for almost a year!&nbsp;All our content is free on Google Drive at:&nbsp;<a href="https://drive.google.com/drive/u/0/folders/17vy0_18gGHaiDQsYfCzMnGLQ2F_AMCjf" target="_blank" rel="nofollow noopener">This Link here!</a>&nbsp;<br><br>This book is a PDF Version of the core rule document if you would like to download it this way.&nbsp; This book is all you need to start a campaign in this world. Wyldrvir also has a podcast and Discord server which you can link from here:&nbsp;<a href="https://worldofwyldrvir.carrd.co/" rel="nofollow noopener">https://worldofwyldrvir.carrd.co/<br><br><strong></strong></a>Huge thanks to you for considering downloading our first book!&nbsp;</span></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a></p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener">
<p><img alt="Image" src="https://pbs.twimg.com/media/Ewp6rv8WQAEw35v?format=jpg&amp;name=360x360" class="" style="opacity: 0; width: 251px" loading="lazy"></p>
</a><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><br></p><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener">
<p><img alt="Image" src="https://pbs.twimg.com/media/Ewp6uTWWQAg15tz?format=png&amp;name=360x360" class="" style="opacity: 0; width: 251px" loading="lazy"></p>
</a><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><br></p><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener"><br></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener"></a></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/wFAOfRiFRKc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTMxODguanBn/original/Xx928I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MjgucG5n/original/C5LQwS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MzAuanBn/original/Itl3s%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MzUucG5n/original/ACpQxH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTMxOTAucG5n/original/YJVTnF.png]]

<p><strong></strong>In Write'n'Slash play <strong>Molly</strong>, a doll who dreams to <strong>write </strong>like humans!</p>
<p>However, the other toys are <strong>reluctant </strong>to this idea and will do everything to prevent it...</p>
<p>Forget the mouse, the <strong>keyboard </strong>is your only <strong>weapon </strong>against the waves of toys that want to&nbsp;stop you from learning new words.</p>
<p class="text-center">______</p>
<p>Write'n'Slash was made during the ISART Digital's <strong>Game Week 2019</strong> in Paris.&nbsp;</p>
<p>The theme was : <strong>"Hack'n' Slash + ..."&nbsp;</strong>It means that we were supposed to mix the genre hack'n slash with another genre.</p>
<p>So I pitched Write'n'Slash,&nbsp; a text-based hack'n slash!</p>
<p class="text-center">______</p>
<p>At the end of the Game Week other jammers played other's people games (at least 25 games)&nbsp;and voted. We won the "<strong>Best Gameplay</strong>" award!</p>
<p class="text-center">______</p>
<p>Thanks to this amazing team we made Write'n'Slash in less than 4 days!</p>
<p><br></p>
<h4><em>Game Designer:&nbsp;</em></h4>
<ul><li>Valentin SERRI&nbsp;</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="https://valentinserri.wixsite.com/portfolio" rel="nofollow noopener">https://valentinserri.wixsite.com/portfolio</a><span></span></p>
<p><em>Twitter:</em>&nbsp;<a href="https://twitter.com/Khipow" rel="nofollow noopener">https://twitter.com/Khipow</a>&nbsp;</p>
<h4><em>Game Programers:&nbsp;</em></h4>
<ul><li>Maxence BEAUMONT</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="http://maxencebeaumont.fr/" rel="nofollow noopener">http://maxencebeaumont.fr/</a></p>
<ul><li>Clément CAPPANNELLI</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="https://clemswork.wordpress.com/" rel="nofollow noopener">https://clemswork.wordpress.com/</a></p>
<p><br></p>
<h4><em>Game Artists:&nbsp;</em></h4>
<ul><li>Sottheavid CHHUON</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="http://sottheavidchhuon.fr/" rel="nofollow noopener">http://sottheavidchhuon.fr/</a></p>
<ul><li>Vassili Dreschmann</li></ul>
<ul><li>Marie M'HAMMED-OUBELLA</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="https://marieoubella.wixsite.com/monportfolio" rel="nofollow noopener">https://marieoubella.wixsite.com/monportfolio</a></p>
<ul><li>Nicolas VONG</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="https://nicolasvong.wixsite.com/portfolio" rel="nofollow noopener">https://nicolasvong.wixsite.com/portfolio</a></p>
<ul><li>Lynn WILLIAMS</li></ul>
<p><em>Portfolio:</em>&nbsp;<a href="https://lynnwilliamse.wixsite.com/siteportfolio/portfolio?fbclid=IwAR0tsWRiWiP1C2S2YuoSbU43TsqRjzbR6fVmQy02oRQDrcJn-OxPvW8xQs0" rel="nofollow noopener">https://lynnwilliamse.wixsite.com/siteportfolio/portfolio?fbclid=IwAR0tsWRiWiP1C2S2YuoSbU43TsqRjzbR6fVmQy02oRQDrcJn-OxPvW8xQs0</a></p>
<p><br></p>
<h4><em>Music &amp; Sound Designers:</em></h4>
<ul><li>Kevin DEDOU</li><li>Ge DING</li></ul>
<p><em>Soundcloud:</em>&nbsp;<a href="https://soundcloud.com/ar_d2?fbclid=IwAR02X3cYlSmLXePiCJmSQW84Tg4psJDNBNJbLLSiB0VU1Hg9y3ZqYuZgQRI" rel="nofollow noopener">https://soundcloud.com/ar_d2?fbclid=IwAR02X3cYlSmLXePiCJmSQW84Tg4psJDNBNJbLLSiB0VU1Hg9y3ZqYuZgQRI</a></p>
<p><br></p>
<p>Special thanks to the playtesters, teachers and ISART Digital.&nbsp;</p>
<p class="text-center">______</p>
<p>The game contains only one level.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/qLCjRk1p_fA" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNDcuanBn/original/lH2Jlv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTkuanBn/original/SmOgAf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTYuanBn/original/PSoaem.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTcuanBn/original/FgC00q.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTguanBn/original/iyt8My.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNjEuanBn/original/NrMYsb.jpg]]
<p><strong>五德 (Wu De) - The Five Powers</strong> is a narrative RPG - a <strong>Shared Narrative</strong>. It is setting agnostic, which means it you can play&nbsp;五德 - The Five Powers in any setting you choose. Creating your own setting is part of setting up your unique game experience.</p>
<blockquote>五德 - The Five Powers<em> is like the Base Game/SRD of the Element Dice System. It is a toolbox for your own creations!</em></blockquote>
<p>五德 - The Five Powers is powered by the <a href="https://wuderpg.wordpress.com/element-dice-system-2/" target="_blank" rel="nofollow noopener">Element Dice System</a>, a system based on the east-asian philosophy of Yin &amp; Yang and the 5 Powers, or Elements.</p>
<p>The game requires only 6 d6 in two different colors (3 white dice, 3 black dice - or any 2 colors you choose). But you can easily create your own Element Dice with some creativity.</p>
<h3>Quick Guide</h3>
<p>You can also find a <a href="https://wuderpg.itch.io/quick-guide" target="_blank">Quick Guide here</a>.</p>
<h3>Element Dice Games:</h3>
<ul><li><a href="https://wuderpg.itch.io/mariann-soul-detective" target="_blank">Mariann: Soul Detective</a></li><li><a href="https://wuderpg.itch.io/returning-maiden" target="_blank">歸妹 - Returning Maiden</a></li><li><a href="https://wuderpg.itch.io/fog-spirit-of-federsee" target="_blank">Fog Spirit of Federsee</a></li><li><a href="https://wuderpg.itch.io/sunken-island" target="_blank">Sunken Island</a></li></ul>
<p><br></p>
<p>*We want to encourage you to purchase through Paypal because this leaves more for the creators than credit card purchases.*</p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNTY5ODA5LzI5OTcwMDkucG5n/original/45AX49.png]]

<p><strong>YBit</strong><strong> </strong>is a pixelated platformer adventure.</p>
<p><strong>About the game</strong><br></p>
<p>You will be playing as a small hero made of information, trying to escape from a program that has crashed. Avoiding errors, not falling down and getting to the exits will be your mission.<br></p>
<ul><li>100 levels</li><li>Pixel art</li><li>A background story</li><li>16 different types of platforms</li><li>Full keyboard and joystick support
</li></ul>
<p><strong> How to play<br></strong></p>
<p>Just move around with the arrows and press space to talk.<br></p>
<p><strong>About me<br></strong></p>
<p>My name is Facundo and I have made around 40 games that are public and free to play. You can check them on my <a href="http://monoflauta.com/portfolio/games/" target="_blank" rel="nofollow noopener">website</a> if you are interested!<br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/DusH7GQwXh8" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTczOS5wbmc=/original/JRO7%2B0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0NC5wbmc=/original/5IQmN5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0NS5wbmc=/original/E8Hx0h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0Ni5wbmc=/original/gsUxIj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc1My5wbmc=/original/zpXwzO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc1Mi5wbmc=/original/B38f0x.png]]
<p><img src="https://img.itch.zone/aW1nLzEzMTMyNTcucG5n/original/6gcvHa.png" loading="lazy">Yi and the Thousand Moons is a short video game musical writ<dfn class="">ten and developed by </dfn>David Su. Through the course of several original interactive songs, featuring a full cast and live band, the game weaves a story of the archer Yi's journey to save her village.</p>
<p>Darkness is expanding, and the gods plan to combat it by harvesting moonlight. They want the legendary archer Yi to shoot the moons down, but the villagers have warned her that the moons are what protect the earth from stardust. Help Yi rescue her village from catastrophe!</p>
<p>Starring:<br>Dominique Star as Yi<br>Laila Smith as Villager Qing<br>Magnus Ferguson as Villager Wen<br>Reid Jenkins as Villager Zhi<br>Wesley Kwok as God Shui<br>Yuyu Feng as God Mu<br>Gabriel Zucker as God Huo</p>
<p>Additional Musicians:<br>Siddhu Anandalingam (saxophones)<br>Reid Jenkins (violin)<br>Gabriel Zucker (guitar)</p>
<p><strong>Key Features</strong></p>
<ul><li>A unique interactive musical experience in which all the levels are songs to be played through (in both senses of the word!)</li><li><dfn class="">Seven original songs and </dfn><dfn class="">six preludes composed by </dfn>David Su, starring a full cast and live band</li><li>Play as Yi, a legendary archer who has been commanded by the gods to shoot down all of the moons</li><li>Enter a world in which all your interactions with characters occur through music</li></ul>
<p><strong>Awards</strong></p>
<p>- Nominated in the Audio Design category at the&nbsp;<a href="https://steamcommunity.com/linkfilter/?url=http://tiga.org/awards/2017-shortlist" target="_blank" rel="nofollow noopener"><dfn class="">2017 TIGA Games Industry&nbsp;</dfn>Awards</a><br>- Nominated for Best Style at the&nbsp;<dfn class=""><a href="https://steamcommunity.com/linkfilter/?url=https://www.thebitawards.com/awards" target="_blank" rel="nofollow noopener">2017 Bit Awards</a></dfn><br>- Best Arthouse Finalist in the Indie Z<dfn class="">one at&nbsp;</dfn><span class=""><a href="https://dreamhack.com/austin/indie-zone" class="" rel="nofollow noopener">DreamHack Austin 2018</a></span><br>- Finalist in the&nbsp;<span class=""><a href="http://indieprize.org/usa2018/" class="" rel="nofollow noopener">Indie Prize Showcase</a></span>&nbsp;at Casual Connect USA 2018<br>-&nbsp;Official selection in the&nbsp;<span class=""><a href="http://playdategameshow.com/" class="" rel="nofollow noopener">Playdate Game Show</a></span>&nbsp;at LA Zine Fest 2018<br>- Entrant in the&nbsp;<a href="http://www.igf.com/article/igf-2018-celebrates-bumper-crop-diverse-and-exciting-entries" target="_blank" rel="nofollow noopener"><dfn class="">2018 Independent Games Festival</dfn></a><br>- Showcased at Playcrafting’s&nbsp;<dfn class="">2017 Fall Play Game&nbsp;</dfn>Expo<br>- Official artwork selection at the&nbsp;<span class=""><a href="https://steamcommunity.com/linkfilter/?url=http://hackingarts.com/tech-expo-2017" target="_blank" rel="nofollow noopener">MIT Hacking Arts 2017</a></span>&nbsp;exhibition</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/XPHa3O28PUs" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTMuanBn/original/GWeZ43.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTUuanBn/original/fV3kYr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTcuanBn/original/R9oxPC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTIuanBn/original/o8LogA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTguanBn/original/6n%2FJVo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTYuanBn/original/20BAG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTQuanBn/original/u05pJv.jpg]]
<p>A confusing campground. Weak characters. Invisible items and weapons. Confounding play. And a purple and teal Jason?</p>
<p>This was&nbsp;<em>Friday the 13th</em>&nbsp;on the NES, a game frequently panned for being clumsy, incomprehensible, and far too hard.</p>
<p>And almost every modern horror game owes it a debt, whether they know it or not.</p>
<p>The NES&nbsp;<em>Friday the 13th&nbsp;</em>broke new ground in horror, establishing the use of confusion and nebulous rules to create a compelling mystery. It created pressure and despair through its clever use of hidden items, keeping players from becoming too powerful. It also created a powerful stalker in the form of Jason, using his power and shocking appearances to pave the way for the relentless monsters that would haunt our playthroughs of&nbsp;<em>Amnesia</em>,&nbsp;<em>Resident Evil 3</em>,&nbsp;<em>Clock Tower</em>, and more.</p>
<p>Despite its hated reputation,&nbsp;<em>Friday the 13th</em>&nbsp;established trends back in 1989 that would continue to shape horror to the present. It would also ask questions few other horror games would dare. Should horror be pleasant, or should it crush us with fear and hopelessness? Can we make lives truly matter in the disposable existence of a video game?<strong></strong></p>
<p>Featuring interviews with journalists and game developers of various disciplines, "YOU AND YOUR FRIENDS ARE DEAD. – An Unofficial Analysis of LJN's Friday the 13th" is an attempt to break down the various horror elements of the game and how they make&nbsp;<em>Friday the 13th</em>&nbsp;into a misunderstood masterpiece, and one of the most important entries in the genre.</p>

[img width=500 [https://img.itch.zone/aW1nLzIwMTQ1MTguanBn/original/k7lUuw.jpg]]
<p>You Are A Whale Also Part 1 is the spiritual successor to You Are A Whale. Become a whale, live the life of the mighty being in a very serious absolutely realistic game is definitely meant to simulate what actual whale life is like. Whales.</p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/lFtSO5Ap4Yk" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MjAucG5n/original/xMW05S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MjEucG5n/original/Sb9Rth.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MTkucG5n/original/oy0Twd.png]]
<p>I had posted that I hadn't seen anyone thinking about playing a MOSAIC Strict game, and <a href="https://wastelandofenchantment.itch.io/">Matt Bohnhoff</a> replied that he thought it was because no one had made a chargen system. And duh, he was totally right. So I knew I had to make one. And this is it. It's the fourth <a href="http://blog.trilemma.com/2021/02/nothing-at-bottom-mosaic-strict-rpg.html" rel="nofollow noopener">MOSAIC Strict</a> system I've made. <br></p><p>Let me know what you think!</p><p></p><p>Minimum price $2.00. Suggested price $3.00. But if the price&nbsp; is a hardship to you, please email me at paul@halfmeme.com, or DM me on Twitter @paulczege, and I'll get you a download key, no questions asked.</p>Art by by Jesús Langarica.<p></p>
<p></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTk1NjY0LzU2NzUwNjIucG5n/original/Mu1%2F9d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk1NjY0LzU2NzUwNjEucG5n/original/%2BR0%2Bhu.png]]
<h1>Transcendent				Roguelike Solitaire</h1>
<p><em>You have perished, but the fungal spores that suffuse your corpse cannot be destroyed so easily. After a timeless time, you return to a body, though you don’t remember if it is yours or not. You are reconstituted, but also transformed.</em></p>
<p>This game represents a risky, cyclical search for meaning in a vast and hostile mycological landscape. Your personal power is tracked in the playing cards kept in front of you. If you win the battles in the forest, your power will increase. The forest is dealt in front of you, explored, shuffled, and dealt again. Sometimes you will find what you are looking for in the forest before you die. Sometimes not.<br></p>
<h3>Roguelike Solitaire</h3>
<p>Fight monsters in the forest! Deal quick  card layouts for yourself and the forest, resolve the round, do it again. The  more rounds you play, the more you level up your power. When you beat  the game, you could stop. Or you could mark down a transcension bonus  and go around again, stronger from the start.
    
</p>
<h3>
</h3>
<h3>Inspirations</h3>
<p>This game was inspired in equal parts by Peach Garden Games <a href="https://peachgardengames.itch.io/apex-predator">Apex Predator</a>, the videogame genre of “idle games”, and a meme about mushrooms. <br></p>
<h3>What's in the Box?</h3>
<ul><li>Full color PDF for screen.</li><li>A more sedate PDF for printing at home. The print friendly version has no background texture for pages or blocks of text, and the images have all been faded out so they don't burn out your printer. This might also be the high-contrast version.</li></ul>

[img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc2ODEuanBn/original/0qPHwf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxMzQuanBn/original/pMlEHw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxMzIuanBn/original/wcp0mw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5MTQ2MDUucG5n/original/El4p16.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxNTcuanBn/original/0r9nin.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc4MDkuanBn/original/GRw5A%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc5ODUuanBn/original/W9xo4H.jpg]]
<p>You have died.&nbsp;You are now in the <strong>Reaper's Game</strong>. You will be asked questions, and your answers guide your story. You will face <strong>Missions</strong>. You will face <strong>The Noise</strong>. You will face the <strong>Game Master</strong>. <strong>You Have 7 Days</strong>. Will you survive, or face <strong>Erasure</strong>?<br></p>
<p>----</p>
<p>You Have 7 Days is a two page, diceless tabletop roleplaying game for 3+ players, one person to play as the<strong> Game Master</strong> and the others to play as <strong>Contestants,</strong> where the story moves forward by answering questions about the situations your characters face<strong>.&nbsp;</strong></p>
<p>The <strong>Contestants&nbsp;</strong>are&nbsp;people who have died and are now playing the<strong> Reaper's Game </strong>for a chance to earn their life back. The <strong>Reaper's Game </strong>is 7 days long and requires you to beat <strong>Missions</strong>, defend yourself from <strong>The Noise,</strong> and beat the <strong>Game Master</strong> to win. To participate and make it past <strong>Day 1</strong>, you will need to make a&nbsp;<strong>Pact&nbsp;</strong>with other <strong>Contestants </strong>in order to participate, so there is an assumption of teamwork on the part of the part of the players playing this role. The <strong>Game Master&nbsp;</strong>is both a character in the roleplaying game, issuing <strong>Missions</strong> to the <strong>Contestants,&nbsp;</strong>providing obstacles for the <strong>Contestants </strong>to overcome, and fighting the <strong>Contestants </strong>on <strong>Day 7</strong>, while also acting as the game master of <strong>You Have 7 Days</strong> itself, providing <strong>Setups </strong>and <strong>Questions </strong>for the other players to answer, keeping track of the flow of gameplay, and so on.</p>
<p>The way you progress through your story is through <strong>Setups </strong>and <strong>Questions</strong>. <strong>Setups </strong>are ways to establish the scene, and they can be as long or as short as you'd like. <em>You wake up in a crowded part of town. You were not here yesterday.&nbsp;</em><strong>Questions </strong>will be follow-ups to the <strong>Setup</strong>, and the players will answer them for their<strong> Contestants</strong> or <strong>Game Master</strong> honestly. <em>What is the last thing you remember?</em></p>
<p>Page 1&nbsp;has the standard <strong>Setups </strong>and <strong>Questions </strong>for <strong>Day 1</strong> of the <strong>Reaper’s Game</strong>, serving as a way to give the players playing as <strong>Contestants </strong>a way to start thinking about their character before the game starts.&nbsp;Page 2 has premade <strong>Setups</strong> and&nbsp;<strong>Questions</strong> that the&nbsp;<strong>Game Master</strong>&nbsp;can use throughout the <strong>7 Days,&nbsp;</strong>but they will need to come up with more throughout the game.
</p>
<p>----</p>
<p>This was made in 3.5 hours on Twitch! This has not been playtested at all! I hope you enjoy this!</p>

[img width=500 [https://img.itch.zone/aW1nLzU5NDYyMjQucG5n/original/Py6YHd.png]]
<p>You have no idea how long it's been since you last set foot outside your cramped little apartment. You don't really talk to anyone. You can't focus on work. You barely have any appetite to speak of, literally and figuratively. Even casually reading Twitter makes you anxious.</p>
<p>Somehow, you thought moving to a new city would help you meet people you actually like. That you'd find fun activities to do and better opportunities all around. You used to be pretty good at faking your way around being a social butterfly. People actually seemed to like you, and the stuff you made and performed. But now? You can't even remember being that person.</p>
<p>Maybe you should go outside. Maybe it will help.</p>
<p><em>CONTENT WARNING:&nbsp;&nbsp;This is a game based on my experience having a major depressive episode.&nbsp;</em><em>Please do whatever you need to do to be able to engage safely with this subject matter.</em></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4Ny5wbmc=/original/DKvk8X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4Ni5wbmc=/original/RimUkV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4OS5wbmc=/original/FSzMOg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4OC5wbmc=/original/3y1QtZ.png]]
<h2>You wake up. A disembodied voice tells you that you have been trapped in a time loop with your future self. They have committed a terrible crime in the near future, and - according to this voice - the only way you can escape the loop is to convince your future self of the wrongness of their actions.</h2>
<p>It seems you have no choice but to follow their instructions, but that doesn't mean you should believe everything they say. As you progress in your conversation with your future self, it becomes very apparent that something is amiss. Someone is lying to you. The question is: who? And why?<br><br>If you want to be free, make sure you figure out the truth.<br><br>Think carefully. Think strategically.<br><br><em>...and good luck.</em><br></p>
<hr>
<p><strong>Your Future Self</strong>&nbsp;is a thrilling&nbsp;<em>conversation-em-up</em>&nbsp;with a unique conversational "battle" mechanic. It harks back to the aesthetics of text-based adventure games whilst deliberately subverting expectations of the genre.</p>
<p>The full soundtrack is available for free&nbsp;<a href="https://contortionistgames.bandcamp.com/album/your-future-self" rel="nofollow noopener">on bandcamp</a>.</p>
<p><em>WARNING: This game contains flashing images. If you experience epileptic seizures or blackouts when exposed to certain light patterns or flashing lights then immediately discontinue use of this game and and consult your physician before resuming gameplay.</em><br></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/N13OJbbKVMc" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzcucG5n/original/z2NJdu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDIucG5n/original/qFPtzW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzgucG5n/original/0YFZLM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzkucG5n/original/PA5rVo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDAucG5n/original/y2097i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDEucG5n/original/0xOGRy.png]]
<p>This is the 2nd game I ever made, which I did in high school waaaaay back in 2009. I wanted to put it here so I could help with the <a href="https://itch.io/t/1411702/indie-bundle-for-palestinian-aid">Indie Bundle for Palestine</a>.<br></p>

[img width=500 [https://img.itch.zone/aW1nLzYwNjgzODAucG5n/original/tl3zir.png]]
<h1 class="text-center">- a game about speed -</h1>
<p></p>
<blockquote class="text-center"><em>"damn, that's pretty fast" <br>- the developer, to himself</em></blockquote>
<h2 class="text-center">test your skill and beat the timer in ten challenging-ass levels laid out in beautiful minimalist style</h2>
<p></p>
<h2 class="text-center">a variety of unique color palettes, an original soundtrack, and many restarts await you&nbsp;</h2>
<p></p>
<p class="text-center"><em>"yo watch out, your timer's almost o- oh."&nbsp;<br>- shocked playtest bystander</em></p>
<p></p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODQucG5n/original/MXWKh9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODUucG5n/original/TWGuW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODYucG5n/original/B%2Fxer6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODcucG5n/original/W%2BD4sj.png]]
<h3><a href="https://store.steampowered.com/app/1252370/Walking_Simulator_A_Month_Club_Complete_Edition/" target="_blank" rel="nofollow noopener">[Please wishlist the Complete Edition on Steam! 40+ walking sims!]</a></h3>
<blockquote><br>&nbsp;[Y]our dreams trap you inside a seemingly endless version of that unreal landscape and the synth warbles on and you feel curiosity and unease but not quite fear? And you walk and you walk and you run and you run and you glide and leap and the landscape very slowly reveals anomalous objects like buildings that aren’t buildings and elevated highways that aren’t highways and incomprehensibly large crystals and citrine shards that glide through the sky like angular goldfish and it’s just you and the music and the landscape possibly forever and sometimes you move with such terrible speed that you fear you have become something terrible?&nbsp;</blockquote>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<a href="https://www.rockpapershotgun.com/2019/01/02/best-pc-games-of-2018/5/" target="_blank" rel="nofollow noopener">-Rock Paper Shotgun</a><br><br></p>
<p>Thank you to all my&nbsp;<a href="https://www.patreon.com/connorsherlock" target="_blank" rel="nofollow noopener">patreon</a>&nbsp;supporters for making these games possible.</p>
<p><del>---------------------------------------------------------------------</del></p>
<p></p>
<p><strong>Explore distant planets and hidden planes in this bundle of infinite exploration games in two acts.</strong><br></p>
<p></p>
<p><del>---------------------------------------------------------------------</del></p>
<p>Controls:</p>
<p>WSAD: move<br>Mouse: look<br>Shift: run<br>Space: jump<br>Escape:&nbsp;quit (act one),&nbsp;pause (act two)</p>
<p>xbox 360 controller (windows only)<br>left stick: move<br>right stick: look<br>left trigger: run<br>A button: jump<br>Start button: quit (act one),&nbsp;pause (act two)</p>
<p><del>---------------------------------------------------------------------</del><br></p>
<p>ACT ONE (planes)&nbsp;should run on most machines.&nbsp;&nbsp;</p>
<p>ACT TWO (planets)&nbsp;requires&nbsp;a dedicated&nbsp;graphics card.<br></p>
<p>There are multiple games in the zip file, so it won't auto-install using the itch.io app.</p>
<p>Enjoy :)</p>
<p></p>

<iframe width="720" height="450" src="https://www.youtube.com/embed/4irARUjLtrM" frameborder="0" allowfullscreen></iframe>

[img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjAuanBn/original/giu3cB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjEuanBn/original/RIB3uj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NTkuanBn/original/2J7Ukk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NTguanBn/original/waopTX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjIuanBn/original/rPrjDp.jpg]]

<p><em>A TTRPG of Freerunning and Hubris</em></p>
<p>You are urban animals.</p>
<p>In the great city of the Zoopolitan Administrative Region, you're supposed to know your place. Obey the law. Work towards a harmonious society.</p>
<p>But not you. You're Skybridge Goons. The few, the young, the reckless. You run apart from the herd, in the high places of the city, in defiance of the law.</p>
<p>Your pride will take you higher and farther than any creature has gone.</p>
<p>It will also be your doom.</p>
<ul><li>A roleplaying&nbsp;game for 1-4 people, no game master needed! Designed for short-term (1-2 session) play.</li><li>Each player needs 2 six-sided dice and something to write on to play.</li><li>Play furry freerunning fools, performing daredevil stunts and becoming increasingly convinced of your invincibility.</li><li>Random Edges you can earn to upgrade your running, combat skill or self-confidence.&nbsp;</li><li>Rules for how your wild running will end, one way or another.</li><li>An introduction to the&nbsp;Zoopolitan Administrative Region and its diverse districts.</li><li>A&nbsp;hack of the Silver Ennie Award-winning&nbsp;<a href="https://natetreme.itch.io/tunnelgoons">Tunnel Goons</a>&nbsp;by Nate Treme. Featuring tools from <a href="https://briebeau.itch.io/script-change">Script Change</a> by Brie Beau Sheldon. Inspired by&nbsp;<a href="https://dungeoncommandr.itch.io/plot-armor">plot ARMOR</a>&nbsp;by Orion Black.</li><li>16 pages, black-and-white, formatted for A5 (you can print as a booklet!)</li></ul>
<p>This game is still in development; purchases will help fund art commissions and further design and layout.</p>
<p>This game is a companion to <a href="https://roleoverplaydead.itch.io/zfb-undercover-edition">Zoopolitan Future Blues</a>.</p>
<p>Game Design&nbsp;|&nbsp;&nbsp;<a href="https://twitter.com/tunkaipoh" rel="nofollow noopener">Kai Poh (@tunkaipoh)</a>&nbsp;</p>
<p><br></p>

[img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzQxOTM3NzYuanBn/original/tt0sW9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzQxOTM3NzcuanBn/original/3vCyAX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzQxOTM3NzguanBn/original/lCAqaA.jpg]]